chore: use parameters instead of hard coded values

This commit is contained in:
Pierre Gerardi
2023-08-24 11:33:22 +02:00
parent 0ab8f6e1ff
commit c6295c211a
2 changed files with 102 additions and 31 deletions

View File

@@ -1,19 +1,27 @@
# syntax=docker/dockerfile:1
ARG DEBIAN_FRONTEND=noninteractive
ARG PYTHON_VERSION=3.8
FROM python:$PYTHON_VERSION-slim AS base
ARG NVARCH=x86_64
ARG CUDA=11.8
ARG CUDNN_VERSION=8.6.0.163
ARG NV_CUDA_CUDART_VERSION=11.8.89-1
ARG NV_CUDA_COMPAT_PACKAGE=cuda-compat-11-8
ARG TF_TENSORRT_VERSION=8.4.3
FROM python:$PYTHON_VERSION-slim AS base
# NVIDIA: https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/11.8.0/ubuntu2204/base/Dockerfile
# specify the version of the CUDA Toolkit to use and the which driver versions are compatible for each brand of GPU.
ENV NVARCH x86_64
ENV NVIDIA_REQUIRE_CUDA "cuda>=11.8 brand=tesla,driver>=450,driver<451 brand=tesla,driver>=470,driver<471 brand=unknown,driver>=470,driver<471 brand=nvidia,driver>=470,driver<471 brand=nvidiartx,driver>=470,driver<471 brand=geforce,driver>=470,driver<471 brand=geforcertx,driver>=470,driver<471 brand=quadro,driver>=470,driver<471 brand=quadrortx,driver>=470,driver<471 brand=titan,driver>=470,driver<471 brand=titanrtx,driver>=470,driver<471 brand=tesla,driver>=510,driver<511 brand=unknown,driver>=510,driver<511 brand=nvidia,driver>=510,driver<511 brand=nvidiartx,driver>=510,driver<511 brand=geforce,driver>=510,driver<511 brand=geforcertx,driver>=510,driver<511 brand=quadro,driver>=510,driver<511 brand=quadrortx,driver>=510,driver<511 brand=titan,driver>=510,driver<511 brand=titanrtx,driver>=510,driver<511 brand=tesla,driver>=515,driver<516 brand=unknown,driver>=515,driver<516 brand=nvidia,driver>=515,driver<516 brand=nvidiartx,driver>=515,driver<516 brand=geforce,driver>=515,driver<516 brand=geforcertx,driver>=515,driver<516 brand=quadro,driver>=515,driver<516 brand=quadrortx,driver>=515,driver<516 brand=titan,driver>=515,driver<516 brand=titanrtx,driver>=515,driver<516"
# Sets the runtime version of CUDA to use for the image.
ENV NV_CUDA_CUDART_VERSION 11.8.89-1
ENV NV_CUDA_COMPAT_PACKAGE cuda-compat-11-8
ENV NVARCH=$NVARCH \
CUDA=$CUDA \
CUDNN_VERSION=$CUDNN_VERSION \
NV_CUDA_CUDART_VERSION=$NV_CUDA_CUDART_VERSION \
NV_CUDA_COMPAT_PACKAGE=cuda-compat-${CUDA%.*}-${CUDA#*.} \
TF_TENSORRT_VERSION=$TF_TENSORRT_VERSION \
NVIDIA_REQUIRE_CUDA="cuda>=$CUDA brand=tesla,driver>=450,driver<451 brand=tesla,driver>=470,driver<471 brand=unknown,driver>=470,driver<471 brand=nvidia,driver>=470,driver<471 brand=nvidiartx,driver>=470,driver<471 brand=geforce,driver>=470,driver<471 brand=geforcertx,driver>=470,driver<471 brand=quadro,driver>=470,driver<471 brand=quadrortx,driver>=470,driver<471 brand=titan,driver>=470,driver<471 brand=titanrtx,driver>=470,driver<471 brand=tesla,driver>=510,driver<511 brand=unknown,driver>=510,driver<511 brand=nvidia,driver>=510,driver<511 brand=nvidiartx,driver>=510,driver<511 brand=geforce,driver>=510,driver<511 brand=geforcertx,driver>=510,driver<511 brand=quadro,driver>=510,driver<511 brand=quadrortx,driver>=510,driver<511 brand=titan,driver>=510,driver<511 brand=titanrtx,driver>=510,driver<511 brand=tesla,driver>=515,driver<516 brand=unknown,driver>=515,driver<516 brand=nvidia,driver>=515,driver<516 brand=nvidiartx,driver>=515,driver<516 brand=geforce,driver>=515,driver<516 brand=geforcertx,driver>=515,driver<516 brand=quadro,driver>=515,driver<516 brand=quadrortx,driver>=515,driver<516 brand=titan,driver>=515,driver<516 brand=titanrtx,driver>=515,driver<516"
# Updates the package index and installs the necessarys packages to add the CUDA repository, including `gnupg2`, `curl`, and `ca-certificates`. It then downloads the CUDA keyring package and installs it. Finally, it removes the installed packages that are no longer needed and cleans up the apt cache.
# Updates the package index and installs the necessarys packages to add the CUDA repository, including `gnupg2`, `curl`, and `ca-certificates`.
RUN apt-get update && apt-get install -y --no-install-recommends \
gnupg2 curl ca-certificates && \
curl -fsSLO https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/${NVARCH}/cuda-keyring_1.0-1_all.deb && \
@@ -21,35 +29,31 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
apt-get purge --autoremove -y curl \
&& rm -rf /var/lib/apt/lists/*
# Install CUDA Toolkit, cuDNN SDK 8.6.0, optionally TensorRT
# https://github.com/tensorflow/serving/blob/master/tensorflow_serving/tools/docker/Dockerfile.gpu
ENV CUDNN_VERSION=8.6.0.163
ENV TF_TENSORRT_VERSION=8.4.3
ENV CUDA=11.8
# Install CUDA Toolkit, cuDNN SDK, optionally TensorRT
RUN apt-get update && apt-get install -y --no-install-recommends \
cuda-cudart-11-8=${NV_CUDA_CUDART_VERSION} \
cuda-cudart-${CUDA%.*}-${CUDA#*.}=${NV_CUDA_CUDART_VERSION} \
${NV_CUDA_COMPAT_PACKAGE} \
cuda-command-line-tools-11-8 \
libcublas-dev-11-8 \
cuda-nvcc-11-8 \
libcublas-11-8 \
cuda-cupti-11-8 \
cuda-nvrtc-11-8 \
cuda-nvprune-11-8 \
cuda-libraries-11-8 \
libcufft-11-8 \
libcurand-11-8 \
libcusolver-11-8 \
libcusparse-11-8 \
cuda-command-line-tools-${CUDA%.*}-${CUDA#*.} \
libcublas-dev-${CUDA%.*}-${CUDA#*.} \
cuda-nvcc-${CUDA%.*}-${CUDA#*.} \
libcublas-${CUDA%.*}-${CUDA#*.} \
cuda-cupti-${CUDA%.*}-${CUDA#*.} \
cuda-nvrtc-${CUDA%.*}-${CUDA#*.} \
cuda-nvprune-${CUDA%.*}-${CUDA#*.} \
cuda-libraries-${CUDA%.*}-${CUDA#*.} \
libcufft-${CUDA%.*}-${CUDA#*.} \
libcurand-${CUDA%.*}-${CUDA#*.} \
libcusolver-${CUDA%.*}-${CUDA#*.} \
libcusparse-${CUDA%.*}-${CUDA#*.} \
libtool \
libcudnn8=${CUDNN_VERSION}-1+cuda${CUDA} \
libnvinfer8=${TF_TENSORRT_VERSION}-1+cuda11.6 \
libnvinfer-plugin8=${TF_TENSORRT_VERSION}-1+cuda11.6 \
libcudnn8=${CUDNN_VERSION}-1+cuda${NV_CUDA_CUDART_VERSION} \
libnvinfer8=${TF_TENSORRT_VERSION}-1+cuda${CUDA} \
libnvinfer-plugin8=${TF_TENSORRT_VERSION}-1+cuda${CUDA} \
build-essential \
pkg-config \
software-properties-common \
unzip && \
find /usr/local/cuda-11.8/lib64/ -type f -name 'lib*_static.a' -not -name 'libcudart_static.a' -delete \
find /usr/local/cuda-${CUDA}/lib64/ -type f -name 'lib*_static.a' -not -name 'libcudart_static.a' -delete \
&& apt-get clean && \
rm -rf /var/lib/apt/lists/*
@@ -57,11 +61,10 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
RUN echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf \
&& echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf
# Sets environment variables that are required by the `nvidia-container-runtime` to expose all the NVIDIA devices and enable compute and utility capabilities
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility
# Adds the NVIDIA binary paths to the system's `PATH` environment variable.
ENV PATH /usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH}
ENV LD_LIBRARY_PATH /usr/local/nvidia/lib:/usr/local/nvidia/lib64
ENV LD_LIBRARY_PATH /usr/local/nvidia/lib:/usr/local/nvidia/lib64

68
old_Dockerfile Normal file
View File

@@ -0,0 +1,68 @@
# syntax=docker/dockerfile:1
ARG DEBIAN_FRONTEND=noninteractive
ARG PYTHON_VERSION=3.8
FROM python:$PYTHON_VERSION-slim AS base
# NVIDIA: https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/11.8.0/ubuntu2204/base/Dockerfile
# specify the version of the CUDA Toolkit to use and the which driver versions are compatible for each brand of GPU.
ENV NVARCH x86_64
ENV NVIDIA_REQUIRE_CUDA "cuda>=11.8 brand=tesla,driver>=450,driver<451 brand=tesla,driver>=470,driver<471 brand=unknown,driver>=470,driver<471 brand=nvidia,driver>=470,driver<471 brand=nvidiartx,driver>=470,driver<471 brand=geforce,driver>=470,driver<471 brand=geforcertx,driver>=470,driver<471 brand=quadro,driver>=470,driver<471 brand=quadrortx,driver>=470,driver<471 brand=titan,driver>=470,driver<471 brand=titanrtx,driver>=470,driver<471 brand=tesla,driver>=510,driver<511 brand=unknown,driver>=510,driver<511 brand=nvidia,driver>=510,driver<511 brand=nvidiartx,driver>=510,driver<511 brand=geforce,driver>=510,driver<511 brand=geforcertx,driver>=510,driver<511 brand=quadro,driver>=510,driver<511 brand=quadrortx,driver>=510,driver<511 brand=titan,driver>=510,driver<511 brand=titanrtx,driver>=510,driver<511 brand=tesla,driver>=515,driver<516 brand=unknown,driver>=515,driver<516 brand=nvidia,driver>=515,driver<516 brand=nvidiartx,driver>=515,driver<516 brand=geforce,driver>=515,driver<516 brand=geforcertx,driver>=515,driver<516 brand=quadro,driver>=515,driver<516 brand=quadrortx,driver>=515,driver<516 brand=titan,driver>=515,driver<516 brand=titanrtx,driver>=515,driver<516"
# Updates the package index and installs the necessarys packages to add the CUDA repository, including `gnupg2`, `curl`, and `ca-certificates`. It then downloads the CUDA keyring package and installs it. Finally, it removes the installed packages that are no longer needed and cleans up the apt cache.
RUN apt-get update && apt-get install -y --no-install-recommends \
gnupg2 curl ca-certificates && \
curl -fsSLO https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/${NVARCH}/cuda-keyring_1.0-1_all.deb && \
dpkg -i cuda-keyring_1.0-1_all.deb && \
apt-get purge --autoremove -y curl \
&& rm -rf /var/lib/apt/lists/*
# Install CUDA Toolkit, cuDNN SDK 8.6.0, optionally TensorRT
# https://github.com/tensorflow/serving/blob/master/tensorflow_serving/tools/docker/Dockerfile.gpu
ENV CUDA=11.8
ENV NV_CUDA_CUDART_VERSION 11.8.89-1
ENV NV_CUDA_COMPAT_PACKAGE cuda-compat-11-8
ENV CUDNN_VERSION=8.6.0.163
ENV TF_TENSORRT_VERSION=8.4.3
RUN apt-get update && apt-get install -y --no-install-recommends \
cuda-cudart-11-8=${NV_CUDA_CUDART_VERSION} \
${NV_CUDA_COMPAT_PACKAGE} \
cuda-command-line-tools-11-8 \
libcublas-dev-11-8 \
cuda-nvcc-11-8 \
libcublas-11-8 \
cuda-cupti-11-8 \
cuda-nvrtc-11-8 \
cuda-nvprune-11-8 \
cuda-libraries-11-8 \
libcufft-11-8 \
libcurand-11-8 \
libcusolver-11-8 \
libcusparse-11-8 \
libtool \
libcudnn8=${CUDNN_VERSION}-1+cuda${CUDA} \
libnvinfer8=${TF_TENSORRT_VERSION}-1+cuda11.6 \
libnvinfer-plugin8=${TF_TENSORRT_VERSION}-1+cuda11.6 \
build-essential \
pkg-config \
software-properties-common \
unzip && \
find /usr/local/cuda-11.8/lib64/ -type f -name 'lib*_static.a' -not -name 'libcudart_static.a' -delete \
&& apt-get clean && \
rm -rf /var/lib/apt/lists/*
# # Required for nvidia-docker v1
RUN echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf \
&& echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf
# Sets environment variables that are required by the `nvidia-container-runtime` to expose all the NVIDIA devices and enable compute and utility capabilities
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility
# Adds the NVIDIA binary paths to the system's `PATH` environment variable.
ENV PATH /usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH}
ENV LD_LIBRARY_PATH /usr/local/nvidia/lib:/usr/local/nvidia/lib64