From 27887c74d8a8012e760b642593e0810680daf7b0 Mon Sep 17 00:00:00 2001 From: Samuel Maynard Date: Tue, 13 Jun 2023 01:39:38 -0500 Subject: [PATCH] Dockerfile: unify duplicated requirements into single step (#580) --- Dockerfile | 55 ++++++++++++------------------------------------------ 1 file changed, 12 insertions(+), 43 deletions(-) diff --git a/Dockerfile b/Dockerfile index d1a81db..2b84b69 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,21 +1,12 @@ ARG GO_VERSION=1.20 -FROM golang:$GO_VERSION as builder +FROM golang:$GO_VERSION as requirements -ARG BUILD_TYPE= -ARG GO_TAGS=stablediffusion +ARG BUILD_TYPE ARG CUDA_MAJOR_VERSION=11 ARG CUDA_MINOR_VERSION=7 ENV BUILD_TYPE=${BUILD_TYPE} -ENV GO_TAGS=${GO_TAGS} -ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility -ENV NVIDIA_REQUIRE_CUDA="cuda>=${CUDA_MAJOR_VERSION}.0" -ENV NVIDIA_VISIBLE_DEVICES=all -ENV HEALTHCHECK_ENDPOINT=http://localhost:8080/readyz -ENV REBUILD=true - -WORKDIR /build RUN apt-get update && \ apt-get install -y ca-certificates cmake curl @@ -39,55 +30,33 @@ RUN apt-get install -y libopenblas-dev RUN apt-get install -y libopencv-dev && \ ln -s /usr/include/opencv4/opencv2 /usr/include/opencv2 -COPY . . -RUN make build - -FROM golang:$GO_VERSION +FROM requirements as builder -ARG BUILD_TYPE= ARG GO_TAGS=stablediffusion -ARG CUDA_MAJOR_VERSION=11 -ARG CUDA_MINOR_VERSION=7 -ARG FFMPEG= -ENV BUILD_TYPE=${BUILD_TYPE} ENV GO_TAGS=${GO_TAGS} ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility ENV NVIDIA_REQUIRE_CUDA="cuda>=${CUDA_MAJOR_VERSION}.0" ENV NVIDIA_VISIBLE_DEVICES=all -ENV HEALTHCHECK_ENDPOINT=http://localhost:8080/readyz - -ENV REBUILD=true WORKDIR /build -RUN apt-get update && \ - apt-get install -y ca-certificates cmake curl +COPY . . +RUN make build -# CuBLAS requirements -RUN if [ "${BUILD_TYPE}" = "cublas" ]; then \ - apt-get install -y software-properties-common && \ - apt-add-repository contrib && \ - curl -O https://developer.download.nvidia.com/compute/cuda/repos/debian11/x86_64/cuda-keyring_1.0-1_all.deb && \ - dpkg -i cuda-keyring_1.0-1_all.deb && \ - rm -f cuda-keyring_1.0-1_all.deb && \ - apt-get update && \ - apt-get install -y cuda-nvcc-${CUDA_MAJOR_VERSION}-${CUDA_MINOR_VERSION} libcublas-dev-${CUDA_MAJOR_VERSION}-${CUDA_MINOR_VERSION} \ - ; fi +FROM requirements + +ARG FFMPEG + +ENV REBUILD=true +ENV HEALTHCHECK_ENDPOINT=http://localhost:8080/readyz # Add FFmpeg RUN if [ "${FFMPEG}" = "true" ]; then \ apt-get install -y ffmpeg \ ; fi -ENV PATH /usr/local/cuda/bin:${PATH} - -# OpenBLAS requirements -RUN apt-get install -y libopenblas-dev - -# Stable Diffusion requirements -RUN apt-get install -y libopencv-dev && \ - ln -s /usr/include/opencv4/opencv2 /usr/include/opencv2 +WORKDIR /build COPY . . RUN make prepare-sources