diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 83a1492..0000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,2 +0,0 @@ -github: benz0li -liberapay: benz0li diff --git a/CUDA.md b/CUDA.md index 5d569ca..fd22c3f 100644 --- a/CUDA.md +++ b/CUDA.md @@ -1,4 +1,4 @@ -# CUDA-enabled Python docker stack +# CUDA-based Python docker stack GPU accelerated, multi-arch (`linux/amd64`, `linux/arm64/v8`) docker images: @@ -23,7 +23,6 @@ Otherwise the same as the [Python docker stack](README.md#python-docker-stack) p [CUDA math libraries](https://developer.nvidia.com/gpu-accelerated-libraries), [NCCL](https://developer.nvidia.com/nccl) and [cuDNN](https://developer.nvidia.com/cudnn) -* TensortRT and TensorRT plugin libraries ## Table of Contents @@ -60,11 +59,11 @@ latest: ```bash docker build \ --build-arg BASE_IMAGE=ubuntu \ - --build-arg BASE_IMAGE_TAG=22.04 \ + --build-arg BASE_IMAGE_TAG=24.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=11.8.0 \ - --build-arg CUDA_IMAGE_SUBTAG=cudnn8-runtime-ubuntu22.04 \ - --build-arg PYTHON_VERSION=3.11.4 \ + --build-arg CUDA_VERSION=13.4.2 \ + --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ + --build-arg PYTHON_VERSION=3.15.0 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` @@ -74,8 +73,10 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg LIBNVINFER_VERSION=8.5.3-1 \ - --build-arg LIBNVINFER_VERSION_MAJ=8 \ + --build-arg CUDNN_VERSION=9.27.0.42 \ + --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.4 \ + --build-arg NCCL_VERSION=2.31.2 \ + --build-arg NCCL_CUDA_VERSION_MAJ_MIN=13.4 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ -f cuda/latest.Dockerfile . @@ -88,9 +89,9 @@ version: ```bash docker build \ --build-arg BASE_IMAGE=ubuntu \ - --build-arg BASE_IMAGE_TAG=22.04 \ + --build-arg BASE_IMAGE_TAG=24.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_IMAGE_SUBTAG=cudnn8-runtime-ubuntu22.04 \ + --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ -t cuda/python/ver:MAJOR.MINOR.PATCH \ -f ver/MAJOR.MINOR.PATCH.Dockerfile . ``` @@ -131,4 +132,4 @@ docker run -it --rm \ * [`glcr.b-data.ch/cuda/python/base`](https://gitlab.b-data.ch/cuda/python/base/container_registry) * [`glcr.b-data.ch/cuda/python/scipy`](https://gitlab.b-data.ch/cuda/python/scipy/container_registry) -See [Notes](NOTES.md) for tweaks. +See [CUDA Notes](CUDA_NOTES.md) for tweaks. diff --git a/CUDA_NOTES.md b/CUDA_NOTES.md new file mode 100644 index 0000000..f0fb39b --- /dev/null +++ b/CUDA_NOTES.md @@ -0,0 +1,18 @@ +# Notes on CUDA + +The CUDA version is selected as follows: + +* CUDA: The lastest version that has image flavour `devel` including cuDNN + available. + +## Tweaks + +### Environment variables + +**Versions** + +* `CUDA_VERSION` + +**Miscellaneous** + +* `CUDA_IMAGE`: The CUDA image it is derived from. diff --git a/NOTES.md b/NOTES.md index 46528cd..34dbd23 100644 --- a/NOTES.md +++ b/NOTES.md @@ -35,25 +35,3 @@ are installed. The latest Python version is installed at `/usr/local/bin`, regardless of whether all packages – such as numba, tensorflow, etc. – are already compatible with it. - -# Additional notes on CUDA - -The CUDA and OS versions are selected as follows: - -* CUDA: The lastest version that has image flavour `devel` including cuDNN - available. -* OS: The latest version that has TensortRT libraries for `amd64` available. - :information_source: It is taking quite a long time for these to be available - for `arm64`. - -## Tweaks - -### Environment variables - -**Versions** - -* `CUDA_VERSION` - -**Miscellaneous** - -* `CUDA_IMAGE`: The CUDA image it is derived from. diff --git a/README.md b/README.md index 7777ce8..658534d 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -[![minimal-readme compliant](https://img.shields.io/badge/readme%20style-minimal-brightgreen.svg)](https://github.com/RichardLitt/standard-readme/blob/master/example-readmes/minimal-readme.md) [![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) Donate using Liberapay +[![minimal-readme compliant](https://img.shields.io/badge/readme%20style-minimal-brightgreen.svg)](https://github.com/RichardLitt/standard-readme/blob/master/example-readmes/minimal-readme.md) [![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) -| See the [CUDA-enabled Python docker stack](CUDA.md) for GPU accelerated docker images. | -|----------------------------------------------------------------------------------------| +| See the [CUDA-based Python docker stack](CUDA.md) for GPU accelerated docker images. | +|--------------------------------------------------------------------------------------| # Python docker stack @@ -46,6 +46,7 @@ and any configuration thereof. * [Install](#install) * [Usage](#usage) * [Contributing](#contributing) +* [Support](#support) * [License](#license) ## Prerequisites @@ -67,7 +68,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.11.4 \ + --build-arg PYTHON_VERSION=3.15.0 \ -t python/ver \ -f ver/latest.Dockerfile . ``` @@ -111,6 +112,15 @@ This project follows the [Contributor Covenant](https://www.contributor-covenant.org) [Code of Conduct](CODE_OF_CONDUCT.md). +## Support + +Community support: Open a new discussion +[here](https://github.com/orgs/b-data/discussions). + +Commercial support: Contact b-data by [email](mailto:support@b-data.ch). + ## License -[MIT](LICENSE) © 2022 b-data GmbH +Copyright © 2022 b-data GmbH + +Distributed under the terms of the [MIT License](LICENSE). diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 9c11f81..7bde0a9 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,22 @@ -.env: - variables: - PYTHON_VERSION: "3.11.4" +variables: + PYTHON_VERSION: "3.15.0" + TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ: "false" + +workflow: + rules: + - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == null && $PYTHON_VERSION =~ /^3.12/ + variables: + BASE_IMAGE_TAG: "12" + - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == "ubuntu" && $PYTHON_VERSION =~ /^3.12/ + variables: + BASE_IMAGE: "$CUDA_BASE_IMAGE" + BASE_IMAGE_TAG: "22.04" + - if: $CUDA_BASE_IMAGE == "ubuntu" + variables: + BASE_IMAGE: "$CUDA_BASE_IMAGE" + BASE_IMAGE_TAG: "$CUDA_BASE_IMAGE_TAG" + - if: $CI_COMMIT_BRANCH .before-script-build: &before-script-build - | @@ -28,7 +44,6 @@ .build: image: glcr.b-data.ch/docker/docker:dind stage: build - extends: .env services: - name: glcr.b-data.ch/docker/docker:dind alias: docker @@ -43,7 +58,6 @@ .post: image: glcr.b-data.ch/docker/docker:dind stage: .post - extends: .env build:latest-linux-amd64: extends: .build @@ -144,21 +158,21 @@ build-manifest:latest-linux-multiarch: $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$CI_APP_TAG - - | + docker manifest create $CI_APP_REPO:latest $CI_MANIFEST_LIST if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then docker manifest annotate --variant v8 $CI_APP_REPO:latest \ $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 fi docker manifest push $CI_APP_REPO:latest - - | + docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN $CI_MANIFEST_LIST if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN \ $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN - - | + docker manifest create $CI_APP_REPO:$VERSION_MAJ $CI_MANIFEST_LIST if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ \ @@ -185,6 +199,24 @@ build-manifest:version-linux-multiarch: $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$CI_APP_TAG + + if [[ "$TAG_VERSION_MAJ_MIN" == "true" ]]; then + docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN $CI_MANIFEST_LIST + if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then + docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN \ + $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 + fi + docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN + fi + + if [[ "$TAG_VERSION_MAJ" == "true" ]]; then + docker manifest create $CI_APP_REPO:$VERSION_MAJ $CI_MANIFEST_LIST + if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then + docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ \ + $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 + fi + docker manifest push $CI_APP_REPO:$VERSION_MAJ + fi rules: - if: $CI_COMMIT_BRANCH == "freeze-version" && $CI_PIPELINE_TRIGGERED changes: diff --git a/base/3.10.13.Dockerfile b/base/3.10.13.Dockerfile new file mode 100644 index 0000000..523948f --- /dev/null +++ b/base/3.10.13.Dockerfile @@ -0,0 +1,105 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.10.13 +ARG GIT_VERSION=2.42.0 +ARG GIT_LFS_VERSION=3.4.0 +ARG PANDOC_VERSION=3.1.1 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + [ -s "/usr/bin/$src" ]; \ + [ ! -e "/usr/bin/$dst" ]; \ + ln -svT "$src" "/usr/bin/$dst"; \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.11.10.Dockerfile b/base/3.11.10.Dockerfile new file mode 100644 index 0000000..bbed2be --- /dev/null +++ b/base/3.11.10.Dockerfile @@ -0,0 +1,114 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.11.10 +ARG NEOVIM_VERSION=0.10.2 +ARG GIT_VERSION=2.47.1 +ARG GIT_LFS_VERSION=3.6.0 +ARG PANDOC_VERSION=3.4 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.11.4.Dockerfile b/base/3.11.4.Dockerfile new file mode 100644 index 0000000..1352d62 --- /dev/null +++ b/base/3.11.4.Dockerfile @@ -0,0 +1,105 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.11.4 +ARG GIT_VERSION=2.42.0 +ARG GIT_LFS_VERSION=3.4.0 +ARG PANDOC_VERSION=3.1.1 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + [ -s "/usr/bin/$src" ]; \ + [ ! -e "/usr/bin/$dst" ]; \ + ln -svT "$src" "/usr/bin/$dst"; \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.11.5.Dockerfile b/base/3.11.5.Dockerfile new file mode 100644 index 0000000..a48f558 --- /dev/null +++ b/base/3.11.5.Dockerfile @@ -0,0 +1,105 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.11.5 +ARG GIT_VERSION=2.42.0 +ARG GIT_LFS_VERSION=3.4.0 +ARG PANDOC_VERSION=3.1.1 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + [ -s "/usr/bin/$src" ]; \ + [ ! -e "/usr/bin/$dst" ]; \ + ln -svT "$src" "/usr/bin/$dst"; \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.11.6.Dockerfile b/base/3.11.6.Dockerfile new file mode 100644 index 0000000..a3c6344 --- /dev/null +++ b/base/3.11.6.Dockerfile @@ -0,0 +1,106 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.11.6 +ARG GIT_VERSION=2.43.0 +ARG GIT_LFS_VERSION=3.4.0 +ARG PANDOC_VERSION=3.1.1 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + [ -s "/usr/bin/$src" ]; \ + [ ! -e "/usr/bin/$dst" ]; \ + ln -svT "$src" "/usr/bin/$dst"; \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.11.7.Dockerfile b/base/3.11.7.Dockerfile new file mode 100644 index 0000000..50a7158 --- /dev/null +++ b/base/3.11.7.Dockerfile @@ -0,0 +1,106 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.11.7 +ARG GIT_VERSION=2.43.0 +ARG GIT_LFS_VERSION=3.4.1 +ARG PANDOC_VERSION=3.1.11 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.11.8.Dockerfile b/base/3.11.8.Dockerfile new file mode 100644 index 0000000..a1c9de9 --- /dev/null +++ b/base/3.11.8.Dockerfile @@ -0,0 +1,106 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.11.8 +ARG GIT_VERSION=2.44.0 +ARG GIT_LFS_VERSION=3.5.1 +ARG PANDOC_VERSION=3.1.11 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.11.9.Dockerfile b/base/3.11.9.Dockerfile new file mode 100644 index 0000000..ebf18dd --- /dev/null +++ b/base/3.11.9.Dockerfile @@ -0,0 +1,114 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.11.9 +ARG NEOVIM_VERSION=0.10.1 +ARG GIT_VERSION=2.46.0 +ARG GIT_LFS_VERSION=3.5.1 +ARG PANDOC_VERSION=3.2 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.12.0.Dockerfile b/base/3.12.0.Dockerfile new file mode 100644 index 0000000..8c28eff --- /dev/null +++ b/base/3.12.0.Dockerfile @@ -0,0 +1,106 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.0 +ARG GIT_VERSION=2.43.0 +ARG GIT_LFS_VERSION=3.4.0 +ARG PANDOC_VERSION=3.1.1 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + [ -s "/usr/bin/$src" ]; \ + [ ! -e "/usr/bin/$dst" ]; \ + ln -svT "$src" "/usr/bin/$dst"; \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.12.1.Dockerfile b/base/3.12.1.Dockerfile new file mode 100644 index 0000000..31d3386 --- /dev/null +++ b/base/3.12.1.Dockerfile @@ -0,0 +1,106 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.1 +ARG GIT_VERSION=2.43.0 +ARG GIT_LFS_VERSION=3.4.1 +ARG PANDOC_VERSION=3.1.11 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.12.10.Dockerfile b/base/3.12.10.Dockerfile new file mode 100644 index 0000000..2d2cf34 --- /dev/null +++ b/base/3.12.10.Dockerfile @@ -0,0 +1,112 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.10 +ARG NEOVIM_VERSION=0.11.2 +ARG GIT_VERSION=2.49.0 +ARG GIT_LFS_VERSION=3.6.1 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + pip install --upgrade --force-reinstall \ + pip \ + setuptools \ + wheel; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.12.11.Dockerfile b/base/3.12.11.Dockerfile new file mode 100644 index 0000000..768f688 --- /dev/null +++ b/base/3.12.11.Dockerfile @@ -0,0 +1,112 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.11 +ARG NEOVIM_VERSION=0.11.4 +ARG GIT_VERSION=2.51.0 +ARG GIT_LFS_VERSION=3.7.0 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + pip install --upgrade --force-reinstall \ + pip \ + setuptools \ + wheel; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.12.2.Dockerfile b/base/3.12.2.Dockerfile new file mode 100644 index 0000000..bae575b --- /dev/null +++ b/base/3.12.2.Dockerfile @@ -0,0 +1,106 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.2 +ARG GIT_VERSION=2.44.0 +ARG GIT_LFS_VERSION=3.5.1 +ARG PANDOC_VERSION=3.1.11 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.12.3.Dockerfile b/base/3.12.3.Dockerfile new file mode 100644 index 0000000..2042c96 --- /dev/null +++ b/base/3.12.3.Dockerfile @@ -0,0 +1,106 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.3 +ARG GIT_VERSION=2.45.2 +ARG GIT_LFS_VERSION=3.5.1 +ARG PANDOC_VERSION=3.1.11 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.12.4.Dockerfile b/base/3.12.4.Dockerfile new file mode 100644 index 0000000..0fe1aed --- /dev/null +++ b/base/3.12.4.Dockerfile @@ -0,0 +1,106 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.4 +ARG GIT_VERSION=2.46.0 +ARG GIT_LFS_VERSION=3.5.1 +ARG PANDOC_VERSION=3.2 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.12.5.Dockerfile b/base/3.12.5.Dockerfile new file mode 100644 index 0000000..3ae36a8 --- /dev/null +++ b/base/3.12.5.Dockerfile @@ -0,0 +1,114 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.5 +ARG NEOVIM_VERSION=0.10.1 +ARG GIT_VERSION=2.46.0 +ARG GIT_LFS_VERSION=3.5.1 +ARG PANDOC_VERSION=3.2 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.12.6.Dockerfile b/base/3.12.6.Dockerfile new file mode 100644 index 0000000..87c5f28 --- /dev/null +++ b/base/3.12.6.Dockerfile @@ -0,0 +1,112 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.6 +ARG NEOVIM_VERSION=0.10.1 +ARG GIT_VERSION=2.46.2 +ARG GIT_LFS_VERSION=3.5.1 +ARG PANDOC_VERSION=3.2 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + pip install --upgrade --force-reinstall \ + pip \ + setuptools \ + wheel; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.12.7.Dockerfile b/base/3.12.7.Dockerfile new file mode 100644 index 0000000..2a01a04 --- /dev/null +++ b/base/3.12.7.Dockerfile @@ -0,0 +1,112 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.7 +ARG NEOVIM_VERSION=0.10.2 +ARG GIT_VERSION=2.47.1 +ARG GIT_LFS_VERSION=3.6.0 +ARG PANDOC_VERSION=3.4 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + pip install --upgrade --force-reinstall \ + pip \ + setuptools \ + wheel; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.12.8.Dockerfile b/base/3.12.8.Dockerfile new file mode 100644 index 0000000..a470840 --- /dev/null +++ b/base/3.12.8.Dockerfile @@ -0,0 +1,112 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.8 +ARG NEOVIM_VERSION=0.10.4 +ARG GIT_VERSION=2.48.1 +ARG GIT_LFS_VERSION=3.6.1 +ARG PANDOC_VERSION=3.4 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + pip install --upgrade --force-reinstall \ + pip \ + setuptools \ + wheel; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.12.9.Dockerfile b/base/3.12.9.Dockerfile new file mode 100644 index 0000000..db418fe --- /dev/null +++ b/base/3.12.9.Dockerfile @@ -0,0 +1,112 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.9 +ARG NEOVIM_VERSION=0.11.0 +ARG GIT_VERSION=2.49.0 +ARG GIT_LFS_VERSION=3.6.1 +ARG PANDOC_VERSION=3.4 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + pip install --upgrade --force-reinstall \ + pip \ + setuptools \ + wheel; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.13.0.Dockerfile b/base/3.13.0.Dockerfile new file mode 100644 index 0000000..1ae7c9f --- /dev/null +++ b/base/3.13.0.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.0 +ARG NEOVIM_VERSION=0.10.2 +ARG GIT_VERSION=2.47.1 +ARG GIT_LFS_VERSION=3.6.0 +ARG PANDOC_VERSION=3.4 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.13.1.Dockerfile b/base/3.13.1.Dockerfile new file mode 100644 index 0000000..4e5f0d3 --- /dev/null +++ b/base/3.13.1.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.1 +ARG NEOVIM_VERSION=0.10.4 +ARG GIT_VERSION=2.48.1 +ARG GIT_LFS_VERSION=3.6.1 +ARG PANDOC_VERSION=3.4 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.13.10.Dockerfile b/base/3.13.10.Dockerfile new file mode 100644 index 0000000..a7cfc5d --- /dev/null +++ b/base/3.13.10.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.10 +ARG NEOVIM_VERSION=0.11.5 +ARG GIT_VERSION=2.52.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.13.11.Dockerfile b/base/3.13.11.Dockerfile new file mode 100644 index 0000000..d7e577e --- /dev/null +++ b/base/3.13.11.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.11 +ARG NEOVIM_VERSION=0.11.6 +ARG GIT_VERSION=2.53.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.13.12.Dockerfile b/base/3.13.12.Dockerfile new file mode 100644 index 0000000..a0216bb --- /dev/null +++ b/base/3.13.12.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.12 +ARG NEOVIM_VERSION=0.12.1 +ARG GIT_VERSION=2.53.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.8.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.13.13.Dockerfile b/base/3.13.13.Dockerfile new file mode 100644 index 0000000..2ab4fa1 --- /dev/null +++ b/base/3.13.13.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.13 +ARG NEOVIM_VERSION=0.12.2 +ARG GIT_VERSION=2.54.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.8.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.13.14.Dockerfile b/base/3.13.14.Dockerfile new file mode 100644 index 0000000..66b1046 --- /dev/null +++ b/base/3.13.14.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.14 +ARG NEOVIM_VERSION=0.12.4 +ARG GIT_VERSION=2.55.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.10 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.13.15.Dockerfile b/base/3.13.15.Dockerfile new file mode 100644 index 0000000..711bc6d --- /dev/null +++ b/base/3.13.15.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.15 +ARG NEOVIM_VERSION=0.12.5 +ARG GIT_VERSION=2.56.0 +ARG GIT_LFS_VERSION=3.8.0 +ARG PANDOC_VERSION=3.10 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.13.16.Dockerfile b/base/3.13.16.Dockerfile new file mode 100644 index 0000000..fa9f1a1 --- /dev/null +++ b/base/3.13.16.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.16 +ARG NEOVIM_VERSION=0.12.5 +ARG GIT_VERSION=2.56.0 +ARG GIT_LFS_VERSION=3.8.0 +ARG PANDOC_VERSION=3.10 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.13.2.Dockerfile b/base/3.13.2.Dockerfile new file mode 100644 index 0000000..d0515ca --- /dev/null +++ b/base/3.13.2.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.2 +ARG NEOVIM_VERSION=0.11.0 +ARG GIT_VERSION=2.49.0 +ARG GIT_LFS_VERSION=3.6.1 +ARG PANDOC_VERSION=3.4 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.13.3.Dockerfile b/base/3.13.3.Dockerfile new file mode 100644 index 0000000..8a3a653 --- /dev/null +++ b/base/3.13.3.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.3 +ARG NEOVIM_VERSION=0.11.2 +ARG GIT_VERSION=2.49.0 +ARG GIT_LFS_VERSION=3.6.1 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.13.4.Dockerfile b/base/3.13.4.Dockerfile new file mode 100644 index 0000000..2f3fb46 --- /dev/null +++ b/base/3.13.4.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.4 +ARG NEOVIM_VERSION=0.11.2 +ARG GIT_VERSION=2.49.0 +ARG GIT_LFS_VERSION=3.6.1 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.13.5.Dockerfile b/base/3.13.5.Dockerfile new file mode 100644 index 0000000..1f341a2 --- /dev/null +++ b/base/3.13.5.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.5 +ARG NEOVIM_VERSION=0.11.3 +ARG GIT_VERSION=2.50.1 +ARG GIT_LFS_VERSION=3.7.0 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.13.6.Dockerfile b/base/3.13.6.Dockerfile new file mode 100644 index 0000000..2ce99b8 --- /dev/null +++ b/base/3.13.6.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.6 +ARG NEOVIM_VERSION=0.11.3 +ARG GIT_VERSION=2.50.1 +ARG GIT_LFS_VERSION=3.7.0 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.13.7.Dockerfile b/base/3.13.7.Dockerfile new file mode 100644 index 0000000..67b0bff --- /dev/null +++ b/base/3.13.7.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.7 +ARG NEOVIM_VERSION=0.11.4 +ARG GIT_VERSION=2.51.0 +ARG GIT_LFS_VERSION=3.7.0 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.13.8.Dockerfile b/base/3.13.8.Dockerfile new file mode 100644 index 0000000..338bdf2 --- /dev/null +++ b/base/3.13.8.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.8 +ARG NEOVIM_VERSION=0.11.4 +ARG GIT_VERSION=2.51.0 +ARG GIT_LFS_VERSION=3.7.0 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.13.9.Dockerfile b/base/3.13.9.Dockerfile new file mode 100644 index 0000000..0b27002 --- /dev/null +++ b/base/3.13.9.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.9 +ARG NEOVIM_VERSION=0.11.5 +ARG GIT_VERSION=2.52.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.14.0.Dockerfile b/base/3.14.0.Dockerfile new file mode 100644 index 0000000..e89c281 --- /dev/null +++ b/base/3.14.0.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.14.0 +ARG NEOVIM_VERSION=0.11.5 +ARG GIT_VERSION=2.52.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.14.1.Dockerfile b/base/3.14.1.Dockerfile new file mode 100644 index 0000000..0cb09d1 --- /dev/null +++ b/base/3.14.1.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.14.1 +ARG NEOVIM_VERSION=0.11.5 +ARG GIT_VERSION=2.52.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.14.2.Dockerfile b/base/3.14.2.Dockerfile new file mode 100644 index 0000000..68302eb --- /dev/null +++ b/base/3.14.2.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.14.2 +ARG NEOVIM_VERSION=0.11.6 +ARG GIT_VERSION=2.53.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.14.3.Dockerfile b/base/3.14.3.Dockerfile new file mode 100644 index 0000000..cbd9ac6 --- /dev/null +++ b/base/3.14.3.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.14.3 +ARG NEOVIM_VERSION=0.12.1 +ARG GIT_VERSION=2.53.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.8.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.14.4.Dockerfile b/base/3.14.4.Dockerfile new file mode 100644 index 0000000..556c468 --- /dev/null +++ b/base/3.14.4.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.14.4 +ARG NEOVIM_VERSION=0.12.2 +ARG GIT_VERSION=2.54.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.8.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.14.5.Dockerfile b/base/3.14.5.Dockerfile new file mode 100644 index 0000000..d0ae619 --- /dev/null +++ b/base/3.14.5.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.14.5 +ARG NEOVIM_VERSION=0.12.2 +ARG GIT_VERSION=2.54.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.8.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.14.6.Dockerfile b/base/3.14.6.Dockerfile new file mode 100644 index 0000000..7d4cee1 --- /dev/null +++ b/base/3.14.6.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.14.6 +ARG NEOVIM_VERSION=0.12.4 +ARG GIT_VERSION=2.55.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.10 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/3.14.7.Dockerfile b/base/3.14.7.Dockerfile new file mode 100644 index 0000000..121c2fc --- /dev/null +++ b/base/3.14.7.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.14.7 +ARG NEOVIM_VERSION=0.12.5 +ARG GIT_VERSION=2.56.0 +ARG GIT_LFS_VERSION=3.8.0 +ARG PANDOC_VERSION=3.10 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index c0866d2..690d093 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -1,30 +1,36 @@ ARG BASE_IMAGE=debian -ARG BASE_IMAGE_TAG=12 +ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG GIT_VERSION=2.41.0 -ARG GIT_LFS_VERSION=3.3.0 -ARG PANDOC_VERSION=3.1.1 +ARG NEOVIM_VERSION=0.12.6 +ARG GIT_VERSION=2.56.0 +ARG GIT_LFS_VERSION=3.8.0 +ARG PANDOC_VERSION=3.10 +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi -FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} ARG DEBIAN_FRONTEND=noninteractive ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION ARG GIT_VERSION ARG GIT_LFS_VERSION ARG PANDOC_VERSION ARG BUILD_START -ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ GIT_VERSION=${GIT_VERSION} \ GIT_LFS_VERSION=${GIT_LFS_VERSION} \ PANDOC_VERSION=${PANDOC_VERSION} \ BUILD_DATE=${BUILD_START} +## Install Neovim +COPY --from=nvsi /usr/local /usr/local ## Install Git COPY --from=gsi /usr/local /usr/local ## Install Git LFS @@ -48,6 +54,7 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ libclang-dev \ man-db \ nano \ + ncdu \ procps \ psmisc \ screen \ @@ -57,6 +64,8 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ vim-tiny \ wget \ zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ ## Git: Additional runtime dependencies libcurl3-gnutls \ liberror-perl \ @@ -76,18 +85,13 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ ## ("/usr/bin/python" and friends) for src in pydoc3 python3 python3-config; do \ dst="$(echo "$src" | tr -d 3)"; \ - [ -s "/usr/bin/$src" ]; \ - [ ! -e "/usr/bin/$dst" ]; \ - ln -svT "$src" "/usr/bin/$dst"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ done; \ else \ - ## Force update pip, setuptools and wheel - curl -sLO https://bootstrap.pypa.io/get-pip.py; \ - python get-pip.py \ - pip \ - setuptools \ - wheel; \ - rm get-pip.py; \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ fi \ ## Git: Set default branch name to main && git config --system init.defaultBranch main \ diff --git a/cuda/3.10.13.Dockerfile b/cuda/3.10.13.Dockerfile new file mode 100644 index 0000000..a3db44d --- /dev/null +++ b/cuda/3.10.13.Dockerfile @@ -0,0 +1,72 @@ +ARG BUILD_ON_IMAGE + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +FROM ${BUILD_ON_IMAGE} + +## CUDA_IMAGE +## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 +ARG LIBNVINFER_VERSION=8.5.3-1 +ARG LIBNVINFER_VERSION_MAJ=8 + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ARG CUDA_HOME +ARG NVBLAS_CONFIG_FILE + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + yes | unminimize; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install TensorRT + ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) + && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ + CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ + apt-get update; \ + apt-get -y install --no-install-recommends \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ + ## Keep apt from auto upgrading the libnvinfer packages + apt-mark hold \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ## Create symlink when only TensorRT libraries version > 7 are available + trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$'); \ + trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$'); \ + if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.11.10.Dockerfile b/cuda/3.11.10.Dockerfile new file mode 100644 index 0000000..a3db44d --- /dev/null +++ b/cuda/3.11.10.Dockerfile @@ -0,0 +1,72 @@ +ARG BUILD_ON_IMAGE + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +FROM ${BUILD_ON_IMAGE} + +## CUDA_IMAGE +## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 +ARG LIBNVINFER_VERSION=8.5.3-1 +ARG LIBNVINFER_VERSION_MAJ=8 + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ARG CUDA_HOME +ARG NVBLAS_CONFIG_FILE + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + yes | unminimize; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install TensorRT + ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) + && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ + CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ + apt-get update; \ + apt-get -y install --no-install-recommends \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ + ## Keep apt from auto upgrading the libnvinfer packages + apt-mark hold \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ## Create symlink when only TensorRT libraries version > 7 are available + trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$'); \ + trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$'); \ + if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.11.4.Dockerfile b/cuda/3.11.4.Dockerfile new file mode 100644 index 0000000..a3db44d --- /dev/null +++ b/cuda/3.11.4.Dockerfile @@ -0,0 +1,72 @@ +ARG BUILD_ON_IMAGE + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +FROM ${BUILD_ON_IMAGE} + +## CUDA_IMAGE +## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 +ARG LIBNVINFER_VERSION=8.5.3-1 +ARG LIBNVINFER_VERSION_MAJ=8 + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ARG CUDA_HOME +ARG NVBLAS_CONFIG_FILE + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + yes | unminimize; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install TensorRT + ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) + && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ + CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ + apt-get update; \ + apt-get -y install --no-install-recommends \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ + ## Keep apt from auto upgrading the libnvinfer packages + apt-mark hold \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ## Create symlink when only TensorRT libraries version > 7 are available + trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$'); \ + trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$'); \ + if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.11.5.Dockerfile b/cuda/3.11.5.Dockerfile new file mode 100644 index 0000000..a3db44d --- /dev/null +++ b/cuda/3.11.5.Dockerfile @@ -0,0 +1,72 @@ +ARG BUILD_ON_IMAGE + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +FROM ${BUILD_ON_IMAGE} + +## CUDA_IMAGE +## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 +ARG LIBNVINFER_VERSION=8.5.3-1 +ARG LIBNVINFER_VERSION_MAJ=8 + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ARG CUDA_HOME +ARG NVBLAS_CONFIG_FILE + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + yes | unminimize; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install TensorRT + ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) + && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ + CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ + apt-get update; \ + apt-get -y install --no-install-recommends \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ + ## Keep apt from auto upgrading the libnvinfer packages + apt-mark hold \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ## Create symlink when only TensorRT libraries version > 7 are available + trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$'); \ + trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$'); \ + if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.11.6.Dockerfile b/cuda/3.11.6.Dockerfile new file mode 100644 index 0000000..a3db44d --- /dev/null +++ b/cuda/3.11.6.Dockerfile @@ -0,0 +1,72 @@ +ARG BUILD_ON_IMAGE + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +FROM ${BUILD_ON_IMAGE} + +## CUDA_IMAGE +## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 +ARG LIBNVINFER_VERSION=8.5.3-1 +ARG LIBNVINFER_VERSION_MAJ=8 + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ARG CUDA_HOME +ARG NVBLAS_CONFIG_FILE + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + yes | unminimize; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install TensorRT + ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) + && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ + CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ + apt-get update; \ + apt-get -y install --no-install-recommends \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ + ## Keep apt from auto upgrading the libnvinfer packages + apt-mark hold \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ## Create symlink when only TensorRT libraries version > 7 are available + trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$'); \ + trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$'); \ + if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.11.7.Dockerfile b/cuda/3.11.7.Dockerfile new file mode 100644 index 0000000..a3db44d --- /dev/null +++ b/cuda/3.11.7.Dockerfile @@ -0,0 +1,72 @@ +ARG BUILD_ON_IMAGE + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +FROM ${BUILD_ON_IMAGE} + +## CUDA_IMAGE +## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 +ARG LIBNVINFER_VERSION=8.5.3-1 +ARG LIBNVINFER_VERSION_MAJ=8 + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ARG CUDA_HOME +ARG NVBLAS_CONFIG_FILE + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + yes | unminimize; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install TensorRT + ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) + && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ + CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ + apt-get update; \ + apt-get -y install --no-install-recommends \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ + ## Keep apt from auto upgrading the libnvinfer packages + apt-mark hold \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ## Create symlink when only TensorRT libraries version > 7 are available + trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$'); \ + trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$'); \ + if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.11.8.Dockerfile b/cuda/3.11.8.Dockerfile new file mode 100644 index 0000000..a3db44d --- /dev/null +++ b/cuda/3.11.8.Dockerfile @@ -0,0 +1,72 @@ +ARG BUILD_ON_IMAGE + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +FROM ${BUILD_ON_IMAGE} + +## CUDA_IMAGE +## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 +ARG LIBNVINFER_VERSION=8.5.3-1 +ARG LIBNVINFER_VERSION_MAJ=8 + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ARG CUDA_HOME +ARG NVBLAS_CONFIG_FILE + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + yes | unminimize; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install TensorRT + ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) + && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ + CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ + apt-get update; \ + apt-get -y install --no-install-recommends \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ + ## Keep apt from auto upgrading the libnvinfer packages + apt-mark hold \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ## Create symlink when only TensorRT libraries version > 7 are available + trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$'); \ + trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$'); \ + if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.11.9.Dockerfile b/cuda/3.11.9.Dockerfile new file mode 100644 index 0000000..a3db44d --- /dev/null +++ b/cuda/3.11.9.Dockerfile @@ -0,0 +1,72 @@ +ARG BUILD_ON_IMAGE + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +FROM ${BUILD_ON_IMAGE} + +## CUDA_IMAGE +## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 +ARG LIBNVINFER_VERSION=8.5.3-1 +ARG LIBNVINFER_VERSION_MAJ=8 + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ARG CUDA_HOME +ARG NVBLAS_CONFIG_FILE + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + yes | unminimize; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install TensorRT + ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) + && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ + CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ + apt-get update; \ + apt-get -y install --no-install-recommends \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ + ## Keep apt from auto upgrading the libnvinfer packages + apt-mark hold \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ## Create symlink when only TensorRT libraries version > 7 are available + trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$'); \ + trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$'); \ + if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.12.0.Dockerfile b/cuda/3.12.0.Dockerfile new file mode 100644 index 0000000..a3db44d --- /dev/null +++ b/cuda/3.12.0.Dockerfile @@ -0,0 +1,72 @@ +ARG BUILD_ON_IMAGE + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +FROM ${BUILD_ON_IMAGE} + +## CUDA_IMAGE +## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 +ARG LIBNVINFER_VERSION=8.5.3-1 +ARG LIBNVINFER_VERSION_MAJ=8 + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ARG CUDA_HOME +ARG NVBLAS_CONFIG_FILE + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + yes | unminimize; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install TensorRT + ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) + && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ + CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ + apt-get update; \ + apt-get -y install --no-install-recommends \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ + ## Keep apt from auto upgrading the libnvinfer packages + apt-mark hold \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ## Create symlink when only TensorRT libraries version > 7 are available + trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$'); \ + trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$'); \ + if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.12.1.Dockerfile b/cuda/3.12.1.Dockerfile new file mode 100644 index 0000000..a3db44d --- /dev/null +++ b/cuda/3.12.1.Dockerfile @@ -0,0 +1,72 @@ +ARG BUILD_ON_IMAGE + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +FROM ${BUILD_ON_IMAGE} + +## CUDA_IMAGE +## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 +ARG LIBNVINFER_VERSION=8.5.3-1 +ARG LIBNVINFER_VERSION_MAJ=8 + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ARG CUDA_HOME +ARG NVBLAS_CONFIG_FILE + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + yes | unminimize; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install TensorRT + ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) + && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ + CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ + apt-get update; \ + apt-get -y install --no-install-recommends \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ + ## Keep apt from auto upgrading the libnvinfer packages + apt-mark hold \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ## Create symlink when only TensorRT libraries version > 7 are available + trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$'); \ + trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$'); \ + if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.12.10.Dockerfile b/cuda/3.12.10.Dockerfile new file mode 100644 index 0000000..88c1918 --- /dev/null +++ b/cuda/3.12.10.Dockerfile @@ -0,0 +1,243 @@ +ARG CUDNN_VERSION=8.9.7.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.2 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG LIBNVINFER_VERSION +ARG LIBNVINFER_VERSION_AMD64=10.11.0.33 +ARG LIBNVINFER_VERSION_ARM64=10.3.0.26 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=12.9 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64=12.5 + +## CUDA_IMAGE +## ├── nvidia/cuda:12.9.0-runtime-ubuntu22.04 +## └── nvidia/cuda:12.9.0-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG LIBNVINFER_VERSION_AMD64 +ARG LIBNVINFER_VERSION_ARM64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Install TensorRT + && case "$dpkgArch" in \ + amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 ;; \ + arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 ;; \ + *) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \ + esac \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then \ + dev="-dev"; \ + if dpkg --compare-versions ${LIBNVINFER_VERSION} gt "8.6"; then \ + headers="-headers"; \ + fi; \ + fi \ + && LIBNVINFER_VERSION_MAJ=${LIBNVINFER_VERSION%%.*} \ + && CUDA_VERSION_MAJ_MIN=${LIBNVINFER_CUDA_VERSION_MAJ_MIN:-${CUDA_VERSION%.*}} \ + && apt-get -y install --no-install-recommends \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + ## Keep apt from auto upgrading the libnvinfer packages + && apt-mark hold \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + ## Create symlink when only newer TensorRT libraries are available + && trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$') \ + && trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$') \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \ + ## TensorFlow versions < 2.18 expect TensorRT libraries version 8.6.1/8.6.2 + if [ "$dpkgArch" = "amd64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \ + fi; \ + if [ "$dpkgArch" = "arm64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.2; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.2; \ + fi; \ + ## TensorFlow versions < 2.15 expect TensorRT libraries version 8 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8; \ + fi \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.12.11.Dockerfile b/cuda/3.12.11.Dockerfile new file mode 100644 index 0000000..02444b7 --- /dev/null +++ b/cuda/3.12.11.Dockerfile @@ -0,0 +1,243 @@ +ARG CUDNN_VERSION=8.9.7.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.2 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG LIBNVINFER_VERSION +ARG LIBNVINFER_VERSION_AMD64=10.13.3.9 +ARG LIBNVINFER_VERSION_ARM64=10.3.0.26 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=12.9 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64=12.5 + +## CUDA_IMAGE +## ├── nvidia/cuda:12.9.1-runtime-ubuntu22.04 +## └── nvidia/cuda:12.9.1-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG LIBNVINFER_VERSION_AMD64 +ARG LIBNVINFER_VERSION_ARM64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Install TensorRT + && case "$dpkgArch" in \ + amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 ;; \ + arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 ;; \ + *) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \ + esac \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then \ + dev="-dev"; \ + if dpkg --compare-versions ${LIBNVINFER_VERSION} gt "8.6"; then \ + headers="-headers"; \ + fi; \ + fi \ + && LIBNVINFER_VERSION_MAJ=${LIBNVINFER_VERSION%%.*} \ + && CUDA_VERSION_MAJ_MIN=${LIBNVINFER_CUDA_VERSION_MAJ_MIN:-${CUDA_VERSION%.*}} \ + && apt-get -y install --no-install-recommends \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + ## Keep apt from auto upgrading the libnvinfer packages + && apt-mark hold \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + ## Create symlink when only newer TensorRT libraries are available + && trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$') \ + && trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$') \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \ + ## TensorFlow versions < 2.18 expect TensorRT libraries version 8.6.1/8.6.2 + if [ "$dpkgArch" = "amd64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \ + fi; \ + if [ "$dpkgArch" = "arm64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.2; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.2; \ + fi; \ + ## TensorFlow versions < 2.15 expect TensorRT libraries version 8 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8; \ + fi \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.12.2.Dockerfile b/cuda/3.12.2.Dockerfile new file mode 100644 index 0000000..a3db44d --- /dev/null +++ b/cuda/3.12.2.Dockerfile @@ -0,0 +1,72 @@ +ARG BUILD_ON_IMAGE + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +FROM ${BUILD_ON_IMAGE} + +## CUDA_IMAGE +## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 +ARG LIBNVINFER_VERSION=8.5.3-1 +ARG LIBNVINFER_VERSION_MAJ=8 + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ARG CUDA_HOME +ARG NVBLAS_CONFIG_FILE + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + yes | unminimize; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install TensorRT + ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) + && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ + CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ + apt-get update; \ + apt-get -y install --no-install-recommends \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ + ## Keep apt from auto upgrading the libnvinfer packages + apt-mark hold \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ## Create symlink when only TensorRT libraries version > 7 are available + trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$'); \ + trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$'); \ + if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.12.3.Dockerfile b/cuda/3.12.3.Dockerfile new file mode 100644 index 0000000..0461bf2 --- /dev/null +++ b/cuda/3.12.3.Dockerfile @@ -0,0 +1,238 @@ +ARG CUDNN_VERSION=8.9.7.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.2 + +ARG LIBNVINFER_VERSION=10.0.1.6 +ARG LIBNVINFER_VERSION_AMD64=${LIBNVINFER_VERSION} +ARG LIBNVINFER_VERSION_ARM64=${LIBNVINFER_VERSION} +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN=12.4 + +## CUDA_IMAGE +## ├── nvidia/cuda:12.5.0-runtime-ubuntu22.04 +## └── nvidia/cuda:12.5.0-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG LIBNVINFER_VERSION_AMD64 +ARG LIBNVINFER_VERSION_ARM64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Install TensorRT + && case "$dpkgArch" in \ + amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 ;; \ + arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 ;; \ + *) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \ + esac \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then \ + dev="-dev"; \ + if dpkg --compare-versions ${LIBNVINFER_VERSION} gt "8.6"; then \ + headers="-headers"; \ + fi; \ + fi \ + && LIBNVINFER_VERSION_MAJ=${LIBNVINFER_VERSION%%.*} \ + && CUDA_VERSION_MAJ_MIN=${LIBNVINFER_CUDA_VERSION_MAJ_MIN:-${CUDA_VERSION%.*}} \ + && apt-get -y install --no-install-recommends \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + ## Keep apt from auto upgrading the libnvinfer packages + && apt-mark hold \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + ## Create symlink when only newer TensorRT libraries are available + && trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$') \ + && trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$') \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \ + ## TensorFlow versions < 2.17 expect TensorRT libraries version 8.6.1/8.6.2 + if [ "$dpkgArch" = "amd64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \ + fi; \ + if [ "$dpkgArch" = "arm64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.2; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.2; \ + fi; \ + ## TensorFlow versions < 2.15 expect TensorRT libraries version 8 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8; \ + fi \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.12.4.Dockerfile b/cuda/3.12.4.Dockerfile new file mode 100644 index 0000000..23f15d9 --- /dev/null +++ b/cuda/3.12.4.Dockerfile @@ -0,0 +1,238 @@ +ARG CUDNN_VERSION=8.9.7.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.2 + +ARG LIBNVINFER_VERSION=10.3.0.26 +ARG LIBNVINFER_VERSION_AMD64=${LIBNVINFER_VERSION} +ARG LIBNVINFER_VERSION_ARM64=${LIBNVINFER_VERSION} +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN=12.5 + +## CUDA_IMAGE +## ├── nvidia/cuda:12.5.1-runtime-ubuntu22.04 +## └── nvidia/cuda:12.5.1-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG LIBNVINFER_VERSION_AMD64 +ARG LIBNVINFER_VERSION_ARM64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Install TensorRT + && case "$dpkgArch" in \ + amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 ;; \ + arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 ;; \ + *) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \ + esac \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then \ + dev="-dev"; \ + if dpkg --compare-versions ${LIBNVINFER_VERSION} gt "8.6"; then \ + headers="-headers"; \ + fi; \ + fi \ + && LIBNVINFER_VERSION_MAJ=${LIBNVINFER_VERSION%%.*} \ + && CUDA_VERSION_MAJ_MIN=${LIBNVINFER_CUDA_VERSION_MAJ_MIN:-${CUDA_VERSION%.*}} \ + && apt-get -y install --no-install-recommends \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + ## Keep apt from auto upgrading the libnvinfer packages + && apt-mark hold \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + ## Create symlink when only newer TensorRT libraries are available + && trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$') \ + && trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$') \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \ + ## TensorFlow versions < 2.18 expect TensorRT libraries version 8.6.1/8.6.2 + if [ "$dpkgArch" = "amd64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \ + fi; \ + if [ "$dpkgArch" = "arm64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.2; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.2; \ + fi; \ + ## TensorFlow versions < 2.15 expect TensorRT libraries version 8 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8; \ + fi \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.12.5.Dockerfile b/cuda/3.12.5.Dockerfile new file mode 100644 index 0000000..06f9476 --- /dev/null +++ b/cuda/3.12.5.Dockerfile @@ -0,0 +1,243 @@ +ARG CUDNN_VERSION=8.9.7.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.2 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG LIBNVINFER_VERSION +ARG LIBNVINFER_VERSION_AMD64=10.4.0.26 +ARG LIBNVINFER_VERSION_ARM64=10.3.0.26 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=12.6 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64=12.5 + +## CUDA_IMAGE +## ├── nvidia/cuda:12.6.1-runtime-ubuntu22.04 +## └── nvidia/cuda:12.6.1-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG LIBNVINFER_VERSION_AMD64 +ARG LIBNVINFER_VERSION_ARM64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Install TensorRT + && case "$dpkgArch" in \ + amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 ;; \ + arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 ;; \ + *) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \ + esac \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then \ + dev="-dev"; \ + if dpkg --compare-versions ${LIBNVINFER_VERSION} gt "8.6"; then \ + headers="-headers"; \ + fi; \ + fi \ + && LIBNVINFER_VERSION_MAJ=${LIBNVINFER_VERSION%%.*} \ + && CUDA_VERSION_MAJ_MIN=${LIBNVINFER_CUDA_VERSION_MAJ_MIN:-${CUDA_VERSION%.*}} \ + && apt-get -y install --no-install-recommends \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + ## Keep apt from auto upgrading the libnvinfer packages + && apt-mark hold \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + ## Create symlink when only newer TensorRT libraries are available + && trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$') \ + && trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$') \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \ + ## TensorFlow versions < 2.18 expect TensorRT libraries version 8.6.1/8.6.2 + if [ "$dpkgArch" = "amd64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \ + fi; \ + if [ "$dpkgArch" = "arm64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.2; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.2; \ + fi; \ + ## TensorFlow versions < 2.15 expect TensorRT libraries version 8 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8; \ + fi \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.12.6.Dockerfile b/cuda/3.12.6.Dockerfile new file mode 100644 index 0000000..06f9476 --- /dev/null +++ b/cuda/3.12.6.Dockerfile @@ -0,0 +1,243 @@ +ARG CUDNN_VERSION=8.9.7.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.2 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG LIBNVINFER_VERSION +ARG LIBNVINFER_VERSION_AMD64=10.4.0.26 +ARG LIBNVINFER_VERSION_ARM64=10.3.0.26 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=12.6 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64=12.5 + +## CUDA_IMAGE +## ├── nvidia/cuda:12.6.1-runtime-ubuntu22.04 +## └── nvidia/cuda:12.6.1-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG LIBNVINFER_VERSION_AMD64 +ARG LIBNVINFER_VERSION_ARM64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Install TensorRT + && case "$dpkgArch" in \ + amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 ;; \ + arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 ;; \ + *) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \ + esac \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then \ + dev="-dev"; \ + if dpkg --compare-versions ${LIBNVINFER_VERSION} gt "8.6"; then \ + headers="-headers"; \ + fi; \ + fi \ + && LIBNVINFER_VERSION_MAJ=${LIBNVINFER_VERSION%%.*} \ + && CUDA_VERSION_MAJ_MIN=${LIBNVINFER_CUDA_VERSION_MAJ_MIN:-${CUDA_VERSION%.*}} \ + && apt-get -y install --no-install-recommends \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + ## Keep apt from auto upgrading the libnvinfer packages + && apt-mark hold \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + ## Create symlink when only newer TensorRT libraries are available + && trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$') \ + && trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$') \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \ + ## TensorFlow versions < 2.18 expect TensorRT libraries version 8.6.1/8.6.2 + if [ "$dpkgArch" = "amd64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \ + fi; \ + if [ "$dpkgArch" = "arm64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.2; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.2; \ + fi; \ + ## TensorFlow versions < 2.15 expect TensorRT libraries version 8 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8; \ + fi \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.12.7.Dockerfile b/cuda/3.12.7.Dockerfile new file mode 100644 index 0000000..9147390 --- /dev/null +++ b/cuda/3.12.7.Dockerfile @@ -0,0 +1,243 @@ +ARG CUDNN_VERSION=8.9.7.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.2 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG LIBNVINFER_VERSION +ARG LIBNVINFER_VERSION_AMD64=10.7.0.23 +ARG LIBNVINFER_VERSION_ARM64=10.3.0.26 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=12.6 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64=12.5 + +## CUDA_IMAGE +## ├── nvidia/cuda:12.6.3-runtime-ubuntu22.04 +## └── nvidia/cuda:12.6.3-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG LIBNVINFER_VERSION_AMD64 +ARG LIBNVINFER_VERSION_ARM64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Install TensorRT + && case "$dpkgArch" in \ + amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 ;; \ + arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 ;; \ + *) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \ + esac \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then \ + dev="-dev"; \ + if dpkg --compare-versions ${LIBNVINFER_VERSION} gt "8.6"; then \ + headers="-headers"; \ + fi; \ + fi \ + && LIBNVINFER_VERSION_MAJ=${LIBNVINFER_VERSION%%.*} \ + && CUDA_VERSION_MAJ_MIN=${LIBNVINFER_CUDA_VERSION_MAJ_MIN:-${CUDA_VERSION%.*}} \ + && apt-get -y install --no-install-recommends \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + ## Keep apt from auto upgrading the libnvinfer packages + && apt-mark hold \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + ## Create symlink when only newer TensorRT libraries are available + && trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$') \ + && trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$') \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \ + ## TensorFlow versions < 2.18 expect TensorRT libraries version 8.6.1/8.6.2 + if [ "$dpkgArch" = "amd64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \ + fi; \ + if [ "$dpkgArch" = "arm64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.2; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.2; \ + fi; \ + ## TensorFlow versions < 2.15 expect TensorRT libraries version 8 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8; \ + fi \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.12.8.Dockerfile b/cuda/3.12.8.Dockerfile new file mode 100644 index 0000000..4be7f64 --- /dev/null +++ b/cuda/3.12.8.Dockerfile @@ -0,0 +1,243 @@ +ARG CUDNN_VERSION=8.9.7.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.2 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG LIBNVINFER_VERSION +ARG LIBNVINFER_VERSION_AMD64=10.8.0.43 +ARG LIBNVINFER_VERSION_ARM64=10.3.0.26 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=12.8 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64=12.5 + +## CUDA_IMAGE +## ├── nvidia/cuda:12.8.0-runtime-ubuntu22.04 +## └── nvidia/cuda:12.8.0-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG LIBNVINFER_VERSION_AMD64 +ARG LIBNVINFER_VERSION_ARM64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Install TensorRT + && case "$dpkgArch" in \ + amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 ;; \ + arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 ;; \ + *) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \ + esac \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then \ + dev="-dev"; \ + if dpkg --compare-versions ${LIBNVINFER_VERSION} gt "8.6"; then \ + headers="-headers"; \ + fi; \ + fi \ + && LIBNVINFER_VERSION_MAJ=${LIBNVINFER_VERSION%%.*} \ + && CUDA_VERSION_MAJ_MIN=${LIBNVINFER_CUDA_VERSION_MAJ_MIN:-${CUDA_VERSION%.*}} \ + && apt-get -y install --no-install-recommends \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + ## Keep apt from auto upgrading the libnvinfer packages + && apt-mark hold \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + ## Create symlink when only newer TensorRT libraries are available + && trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$') \ + && trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$') \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \ + ## TensorFlow versions < 2.18 expect TensorRT libraries version 8.6.1/8.6.2 + if [ "$dpkgArch" = "amd64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \ + fi; \ + if [ "$dpkgArch" = "arm64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.2; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.2; \ + fi; \ + ## TensorFlow versions < 2.15 expect TensorRT libraries version 8 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8; \ + fi \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.12.9.Dockerfile b/cuda/3.12.9.Dockerfile new file mode 100644 index 0000000..6a1a608 --- /dev/null +++ b/cuda/3.12.9.Dockerfile @@ -0,0 +1,243 @@ +ARG CUDNN_VERSION=8.9.7.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.2 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG LIBNVINFER_VERSION +ARG LIBNVINFER_VERSION_AMD64=10.9.0.34 +ARG LIBNVINFER_VERSION_ARM64=10.3.0.26 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=12.8 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64=12.5 + +## CUDA_IMAGE +## ├── nvidia/cuda:12.8.1-runtime-ubuntu22.04 +## └── nvidia/cuda:12.8.1-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG LIBNVINFER_VERSION_AMD64 +ARG LIBNVINFER_VERSION_ARM64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Install TensorRT + && case "$dpkgArch" in \ + amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 ;; \ + arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 ;; \ + *) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \ + esac \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then \ + dev="-dev"; \ + if dpkg --compare-versions ${LIBNVINFER_VERSION} gt "8.6"; then \ + headers="-headers"; \ + fi; \ + fi \ + && LIBNVINFER_VERSION_MAJ=${LIBNVINFER_VERSION%%.*} \ + && CUDA_VERSION_MAJ_MIN=${LIBNVINFER_CUDA_VERSION_MAJ_MIN:-${CUDA_VERSION%.*}} \ + && apt-get -y install --no-install-recommends \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + ## Keep apt from auto upgrading the libnvinfer packages + && apt-mark hold \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + ## Create symlink when only newer TensorRT libraries are available + && trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$') \ + && trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$') \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \ + ## TensorFlow versions < 2.18 expect TensorRT libraries version 8.6.1/8.6.2 + if [ "$dpkgArch" = "amd64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \ + fi; \ + if [ "$dpkgArch" = "arm64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.2; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.2; \ + fi; \ + ## TensorFlow versions < 2.15 expect TensorRT libraries version 8 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8; \ + fi \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.13.0.Dockerfile b/cuda/3.13.0.Dockerfile new file mode 100644 index 0000000..6cb4dd3 --- /dev/null +++ b/cuda/3.13.0.Dockerfile @@ -0,0 +1,176 @@ +ARG CUDNN_VERSION=9.6.0.74 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:12.6.3-runtime-ubuntu22.04 +## └── nvidia/cuda:12.6.3-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.13.1.Dockerfile b/cuda/3.13.1.Dockerfile new file mode 100644 index 0000000..909a841 --- /dev/null +++ b/cuda/3.13.1.Dockerfile @@ -0,0 +1,176 @@ +ARG CUDNN_VERSION=9.7.0.66 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:12.8.0-runtime-ubuntu22.04 +## └── nvidia/cuda:12.8.0-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.13.10.Dockerfile b/cuda/3.13.10.Dockerfile new file mode 100644 index 0000000..103f7df --- /dev/null +++ b/cuda/3.13.10.Dockerfile @@ -0,0 +1,183 @@ +ARG CUDNN_VERSION=9.17.0.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.0.2-runtime-ubuntu24.04 +## └── nvidia/cuda:13.0.2-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.13.11.Dockerfile b/cuda/3.13.11.Dockerfile new file mode 100644 index 0000000..638cb01 --- /dev/null +++ b/cuda/3.13.11.Dockerfile @@ -0,0 +1,270 @@ +ARG CUDNN_VERSION=9.19.0.56 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.1 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.29.3 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.1 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.1.1-runtime-ubuntu24.04 +## └── nvidia/cuda:13.1.1-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.13.12.Dockerfile b/cuda/3.13.12.Dockerfile new file mode 100644 index 0000000..3ccb3b5 --- /dev/null +++ b/cuda/3.13.12.Dockerfile @@ -0,0 +1,270 @@ +ARG CUDNN_VERSION=9.20.0.48 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.2 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.29.7 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.2 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.2.0-runtime-ubuntu24.04 +## └── nvidia/cuda:13.2.0-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.13.13.Dockerfile b/cuda/3.13.13.Dockerfile new file mode 100644 index 0000000..4580ed6 --- /dev/null +++ b/cuda/3.13.13.Dockerfile @@ -0,0 +1,270 @@ +ARG CUDNN_VERSION=9.23.2.1 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.3 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.30.7 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.3 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.3.0-runtime-ubuntu24.04 +## └── nvidia/cuda:13.3.0-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.13.14.Dockerfile b/cuda/3.13.14.Dockerfile new file mode 100644 index 0000000..6ec10e3 --- /dev/null +++ b/cuda/3.13.14.Dockerfile @@ -0,0 +1,270 @@ +ARG CUDNN_VERSION=9.25.0.15 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.3 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.30.7 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.3 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.3.1-runtime-ubuntu24.04 +## └── nvidia/cuda:13.3.1-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.13.15.Dockerfile b/cuda/3.13.15.Dockerfile new file mode 100644 index 0000000..8977502 --- /dev/null +++ b/cuda/3.13.15.Dockerfile @@ -0,0 +1,270 @@ +ARG CUDNN_VERSION=9.27.0.42 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.4 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.31.2 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.4 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.4.2-runtime-ubuntu24.04 +## └── nvidia/cuda:13.4.2-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.13.16.Dockerfile b/cuda/3.13.16.Dockerfile new file mode 100644 index 0000000..8977502 --- /dev/null +++ b/cuda/3.13.16.Dockerfile @@ -0,0 +1,270 @@ +ARG CUDNN_VERSION=9.27.0.42 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.4 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.31.2 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.4 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.4.2-runtime-ubuntu24.04 +## └── nvidia/cuda:13.4.2-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.13.2.Dockerfile b/cuda/3.13.2.Dockerfile new file mode 100644 index 0000000..d1c2df1 --- /dev/null +++ b/cuda/3.13.2.Dockerfile @@ -0,0 +1,176 @@ +ARG CUDNN_VERSION=9.8.0.87 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:12.8.1-runtime-ubuntu22.04 +## └── nvidia/cuda:12.8.1-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.13.3.Dockerfile b/cuda/3.13.3.Dockerfile new file mode 100644 index 0000000..7303e61 --- /dev/null +++ b/cuda/3.13.3.Dockerfile @@ -0,0 +1,176 @@ +ARG CUDNN_VERSION=9.10.1.4 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:12.9.0-runtime-ubuntu22.04 +## └── nvidia/cuda:12.9.0-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.13.4.Dockerfile b/cuda/3.13.4.Dockerfile new file mode 100644 index 0000000..ac9aa47 --- /dev/null +++ b/cuda/3.13.4.Dockerfile @@ -0,0 +1,184 @@ +ARG CUDNN_VERSION=9.10.1.4 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:12.9.0-runtime-ubuntu22.04 +## └── nvidia/cuda:12.9.0-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.13.5.Dockerfile b/cuda/3.13.5.Dockerfile new file mode 100644 index 0000000..437974a --- /dev/null +++ b/cuda/3.13.5.Dockerfile @@ -0,0 +1,184 @@ +ARG CUDNN_VERSION=9.11.0.98 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:12.9.1-runtime-ubuntu22.04 +## └── nvidia/cuda:12.9.1-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.13.6.Dockerfile b/cuda/3.13.6.Dockerfile new file mode 100644 index 0000000..6a50569 --- /dev/null +++ b/cuda/3.13.6.Dockerfile @@ -0,0 +1,184 @@ +ARG CUDNN_VERSION=9.11.1.4 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:12.9.1-runtime-ubuntu22.04 +## └── nvidia/cuda:12.9.1-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.13.7.Dockerfile b/cuda/3.13.7.Dockerfile new file mode 100644 index 0000000..f2b35b3 --- /dev/null +++ b/cuda/3.13.7.Dockerfile @@ -0,0 +1,183 @@ +ARG CUDNN_VERSION=9.13.1.26 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.0.1-runtime-ubuntu24.04 +## └── nvidia/cuda:13.0.1-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.13.8.Dockerfile b/cuda/3.13.8.Dockerfile new file mode 100644 index 0000000..e55571e --- /dev/null +++ b/cuda/3.13.8.Dockerfile @@ -0,0 +1,183 @@ +ARG CUDNN_VERSION=9.14.0.64 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.0.1-runtime-ubuntu24.04 +## └── nvidia/cuda:13.0.1-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.13.9.Dockerfile b/cuda/3.13.9.Dockerfile new file mode 100644 index 0000000..e4ad35b --- /dev/null +++ b/cuda/3.13.9.Dockerfile @@ -0,0 +1,183 @@ +ARG CUDNN_VERSION=9.16.0.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.0.2-runtime-ubuntu24.04 +## └── nvidia/cuda:13.0.2-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.14.0.Dockerfile b/cuda/3.14.0.Dockerfile new file mode 100644 index 0000000..e4ad35b --- /dev/null +++ b/cuda/3.14.0.Dockerfile @@ -0,0 +1,183 @@ +ARG CUDNN_VERSION=9.16.0.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.0.2-runtime-ubuntu24.04 +## └── nvidia/cuda:13.0.2-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.14.1.Dockerfile b/cuda/3.14.1.Dockerfile new file mode 100644 index 0000000..103f7df --- /dev/null +++ b/cuda/3.14.1.Dockerfile @@ -0,0 +1,183 @@ +ARG CUDNN_VERSION=9.17.0.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.0.2-runtime-ubuntu24.04 +## └── nvidia/cuda:13.0.2-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.14.2.Dockerfile b/cuda/3.14.2.Dockerfile new file mode 100644 index 0000000..638cb01 --- /dev/null +++ b/cuda/3.14.2.Dockerfile @@ -0,0 +1,270 @@ +ARG CUDNN_VERSION=9.19.0.56 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.1 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.29.3 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.1 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.1.1-runtime-ubuntu24.04 +## └── nvidia/cuda:13.1.1-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.14.3.Dockerfile b/cuda/3.14.3.Dockerfile new file mode 100644 index 0000000..3ccb3b5 --- /dev/null +++ b/cuda/3.14.3.Dockerfile @@ -0,0 +1,270 @@ +ARG CUDNN_VERSION=9.20.0.48 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.2 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.29.7 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.2 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.2.0-runtime-ubuntu24.04 +## └── nvidia/cuda:13.2.0-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.14.4.Dockerfile b/cuda/3.14.4.Dockerfile new file mode 100644 index 0000000..d9e7d3d --- /dev/null +++ b/cuda/3.14.4.Dockerfile @@ -0,0 +1,270 @@ +ARG CUDNN_VERSION=9.22.0.52 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.2 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.30.4 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.2 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.2.1-runtime-ubuntu24.04 +## └── nvidia/cuda:13.2.1-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.14.5.Dockerfile b/cuda/3.14.5.Dockerfile new file mode 100644 index 0000000..4580ed6 --- /dev/null +++ b/cuda/3.14.5.Dockerfile @@ -0,0 +1,270 @@ +ARG CUDNN_VERSION=9.23.2.1 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.3 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.30.7 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.3 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.3.0-runtime-ubuntu24.04 +## └── nvidia/cuda:13.3.0-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.14.6.Dockerfile b/cuda/3.14.6.Dockerfile new file mode 100644 index 0000000..6ec10e3 --- /dev/null +++ b/cuda/3.14.6.Dockerfile @@ -0,0 +1,270 @@ +ARG CUDNN_VERSION=9.25.0.15 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.3 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.30.7 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.3 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.3.1-runtime-ubuntu24.04 +## └── nvidia/cuda:13.3.1-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/3.14.7.Dockerfile b/cuda/3.14.7.Dockerfile new file mode 100644 index 0000000..8977502 --- /dev/null +++ b/cuda/3.14.7.Dockerfile @@ -0,0 +1,270 @@ +ARG CUDNN_VERSION=9.27.0.42 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.4 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.31.2 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.4 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.4.2-runtime-ubuntu24.04 +## └── nvidia/cuda:13.4.2-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/cuda/latest.Dockerfile b/cuda/latest.Dockerfile index 1c41957..bc596db 100644 --- a/cuda/latest.Dockerfile +++ b/cuda/latest.Dockerfile @@ -1,31 +1,162 @@ +ARG CUDNN_VERSION +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR -ARG CUDA_HOME=/usr/local/cuda -ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 -FROM ${BUILD_ON_IMAGE} +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 -ARG LIBNVINFER_VERSION -ARG LIBNVINFER_VERSION_MAJ +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf ARG CUDA_IMAGE_FLAVOR ARG CUPTI_AVAILABLE ARG BUILD_START -ARG CUDA_HOME -ARG NVBLAS_CONFIG_FILE - ENV CUDA_HOME=${CUDA_HOME} \ NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ - LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ BUILD_DATE=${BUILD_START} RUN cpuBlasLib="$(update-alternatives --query \ libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ ## Unminimise if the system has been minimised && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ fi \ ## NVBLAS log configuration && touch /var/log/nvblas.log \ @@ -35,35 +166,15 @@ RUN cpuBlasLib="$(update-alternatives --query \ && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ - ## Install TensorRT - ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) - && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ - ## Install development libraries and headers - ## if devel-flavor of CUDA image is used - if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ - CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ - apt-get update; \ - apt-get -y install --no-install-recommends \ - libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ - libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ - libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ - libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ - ## Keep apt from auto upgrading the libnvinfer packages - apt-mark hold \ - libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ - libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ - libnvinfer${LIBNVINFER_VERSION_MAJ} \ - libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ - ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 - ## Create symlink when only TensorRT libraries version > 7 are available - trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ - grep 'libnvinfer.so.[0-9]\+$'); \ - trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ - grep 'libnvinfer_plugin.so.[0-9]\+$'); \ - if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ - ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ - ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ - fi \ - fi \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ ## Clean up && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 0b23012..6078f8f 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,8 @@ -.env: - variables: - PYTHON_VERSION: "3.11.4" +variables: + PYTHON_VERSION: "3.15.0" + CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" + TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build - | @@ -28,7 +30,6 @@ .build: image: glcr.b-data.ch/docker/docker:dind stage: build - extends: .env services: - name: glcr.b-data.ch/docker/docker:dind alias: docker @@ -43,7 +44,6 @@ .post: image: glcr.b-data.ch/docker/docker:dind stage: .post - extends: .env build:latest-linux-amd64: extends: .build @@ -55,6 +55,7 @@ build:latest-linux-amd64: docker build --pull --build-arg BUILD_ON_IMAGE --build-arg PYTHON_VERSION + --build-arg CTAN_REPO_BUILD_LATEST --build-arg BUILD_START=$(date -uIseconds) -t $CI_APP_REPO:$CI_APP_TAG-linux-amd64 -t $CI_APP_REPO:latest-linux-amd64 @@ -75,6 +76,7 @@ build:latest-linux-arm64v8: docker build --pull --build-arg BUILD_ON_IMAGE --build-arg PYTHON_VERSION + --build-arg CTAN_REPO_BUILD_LATEST --build-arg BUILD_START=$(date -uIseconds) -t $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 -t $CI_APP_REPO:latest-linux-arm64v8 @@ -136,21 +138,21 @@ build-manifest:latest-linux-multiarch: $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$CI_APP_TAG - - | + docker manifest create $CI_APP_REPO:latest $CI_MANIFEST_LIST if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then docker manifest annotate --variant v8 $CI_APP_REPO:latest \ $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 fi docker manifest push $CI_APP_REPO:latest - - | + docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN $CI_MANIFEST_LIST if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN \ $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN - - | + docker manifest create $CI_APP_REPO:$VERSION_MAJ $CI_MANIFEST_LIST if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ \ @@ -177,6 +179,24 @@ build-manifest:version-linux-multiarch: $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$CI_APP_TAG + + if [[ "$TAG_VERSION_MAJ_MIN" == "true" ]]; then + docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN $CI_MANIFEST_LIST + if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then + docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN \ + $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 + fi + docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN + fi + + if [[ "$TAG_VERSION_MAJ" == "true" ]]; then + docker manifest create $CI_APP_REPO:$VERSION_MAJ $CI_MANIFEST_LIST + if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then + docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ \ + $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 + fi + docker manifest push $CI_APP_REPO:$VERSION_MAJ + fi rules: - if: $CI_COMMIT_BRANCH == "freeze-version" && $CI_PIPELINE_TRIGGERED changes: diff --git a/scipy/3.10.13.Dockerfile b/scipy/3.10.13.Dockerfile new file mode 100644 index 0000000..757ff76 --- /dev/null +++ b/scipy/3.10.13.Dockerfile @@ -0,0 +1,124 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.10.13 +ARG QUARTO_VERSION=1.3.450 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2023/08/24/tlnet + +FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + qpdf \ + texinfo \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/scipy/3.11.10.Dockerfile b/scipy/3.11.10.Dockerfile new file mode 100644 index 0000000..4f194ad --- /dev/null +++ b/scipy/3.11.10.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.11.10 +ARG QUARTO_VERSION=1.6.39 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/12/03/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit -v=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.11.4.Dockerfile b/scipy/3.11.4.Dockerfile new file mode 100644 index 0000000..ceb0745 --- /dev/null +++ b/scipy/3.11.4.Dockerfile @@ -0,0 +1,124 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.11.4 +ARG QUARTO_VERSION=1.3.450 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2023/08/24/tlnet + +FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + qpdf \ + texinfo \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/scipy/3.11.5.Dockerfile b/scipy/3.11.5.Dockerfile new file mode 100644 index 0000000..468226f --- /dev/null +++ b/scipy/3.11.5.Dockerfile @@ -0,0 +1,125 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.11.5 +ARG QUARTO_VERSION=1.3.450 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2023/10/02/tlnet + +FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/scipy/3.11.6.Dockerfile b/scipy/3.11.6.Dockerfile new file mode 100644 index 0000000..3c98fe4 --- /dev/null +++ b/scipy/3.11.6.Dockerfile @@ -0,0 +1,125 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.11.6 +ARG QUARTO_VERSION=1.3.450 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2023/12/04/tlnet + +FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/scipy/3.11.7.Dockerfile b/scipy/3.11.7.Dockerfile new file mode 100644 index 0000000..c3d50e7 --- /dev/null +++ b/scipy/3.11.7.Dockerfile @@ -0,0 +1,125 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.11.7 +ARG QUARTO_VERSION=1.4.549 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/02/06/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/scipy/3.11.8.Dockerfile b/scipy/3.11.8.Dockerfile new file mode 100644 index 0000000..774f593 --- /dev/null +++ b/scipy/3.11.8.Dockerfile @@ -0,0 +1,125 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.11.8 +ARG QUARTO_VERSION=1.4.552 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/04/02/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/scipy/3.11.9.Dockerfile b/scipy/3.11.9.Dockerfile new file mode 100644 index 0000000..072ce88 --- /dev/null +++ b/scipy/3.11.9.Dockerfile @@ -0,0 +1,133 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.11.9 +ARG QUARTO_VERSION=1.5.57 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/09/07/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.12.0.Dockerfile b/scipy/3.12.0.Dockerfile new file mode 100644 index 0000000..3cfd414 --- /dev/null +++ b/scipy/3.12.0.Dockerfile @@ -0,0 +1,127 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.0 +ARG QUARTO_VERSION=1.3.450 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2023/12/08/tlnet + +FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## For h5py wheels + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + #numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/scipy/3.12.1.Dockerfile b/scipy/3.12.1.Dockerfile new file mode 100644 index 0000000..0945587 --- /dev/null +++ b/scipy/3.12.1.Dockerfile @@ -0,0 +1,127 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.1 +ARG QUARTO_VERSION=1.4.549 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/02/06/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## For h5py wheels + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/scipy/3.12.10.Dockerfile b/scipy/3.12.10.Dockerfile new file mode 100644 index 0000000..fd9870f --- /dev/null +++ b/scipy/3.12.10.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.10 +ARG QUARTO_VERSION=1.7.31 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/06/03/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.12.11.Dockerfile b/scipy/3.12.11.Dockerfile new file mode 100644 index 0000000..343ebc3 --- /dev/null +++ b/scipy/3.12.11.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.11 +ARG QUARTO_VERSION=1.8.25 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/10/09/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.12.2.Dockerfile b/scipy/3.12.2.Dockerfile new file mode 100644 index 0000000..62305dc --- /dev/null +++ b/scipy/3.12.2.Dockerfile @@ -0,0 +1,127 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.2 +ARG QUARTO_VERSION=1.4.553 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/04/09/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## For h5py wheels + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/scipy/3.12.3.Dockerfile b/scipy/3.12.3.Dockerfile new file mode 100644 index 0000000..a9d59e4 --- /dev/null +++ b/scipy/3.12.3.Dockerfile @@ -0,0 +1,127 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.3 +ARG QUARTO_VERSION=1.4.555 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/06/06/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/scipy/3.12.4.Dockerfile b/scipy/3.12.4.Dockerfile new file mode 100644 index 0000000..7ae2b96 --- /dev/null +++ b/scipy/3.12.4.Dockerfile @@ -0,0 +1,127 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.4 +ARG QUARTO_VERSION=1.5.56 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/08/06/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/scipy/3.12.5.Dockerfile b/scipy/3.12.5.Dockerfile new file mode 100644 index 0000000..cd3318d --- /dev/null +++ b/scipy/3.12.5.Dockerfile @@ -0,0 +1,133 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.5 +ARG QUARTO_VERSION=1.5.57 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/09/06/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.12.6.Dockerfile b/scipy/3.12.6.Dockerfile new file mode 100644 index 0000000..68f5e72 --- /dev/null +++ b/scipy/3.12.6.Dockerfile @@ -0,0 +1,133 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.6 +ARG QUARTO_VERSION=1.5.57 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/10/01/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.12.7.Dockerfile b/scipy/3.12.7.Dockerfile new file mode 100644 index 0000000..53b8856 --- /dev/null +++ b/scipy/3.12.7.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.7 +ARG QUARTO_VERSION=1.6.39 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/12/03/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit -v=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.12.8.Dockerfile b/scipy/3.12.8.Dockerfile new file mode 100644 index 0000000..a9bf307 --- /dev/null +++ b/scipy/3.12.8.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.8 +ARG QUARTO_VERSION=1.6.40 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/02/04/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit -v=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.12.9.Dockerfile b/scipy/3.12.9.Dockerfile new file mode 100644 index 0000000..3042131 --- /dev/null +++ b/scipy/3.12.9.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.9 +ARG QUARTO_VERSION=1.6.43 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/04/08/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit -v=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.13.0.Dockerfile b/scipy/3.13.0.Dockerfile new file mode 100644 index 0000000..be8eb72 --- /dev/null +++ b/scipy/3.13.0.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.0 +ARG QUARTO_VERSION=1.6.39 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/12/03/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit -v=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + #numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.13.1.Dockerfile b/scipy/3.13.1.Dockerfile new file mode 100644 index 0000000..f877eca --- /dev/null +++ b/scipy/3.13.1.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.1 +ARG QUARTO_VERSION=1.6.40 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/02/04/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit -v=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.13.10.Dockerfile b/scipy/3.13.10.Dockerfile new file mode 100644 index 0000000..40a0d97 --- /dev/null +++ b/scipy/3.13.10.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.10 +ARG QUARTO_VERSION=1.8.26 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/12/05/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.13.11.Dockerfile b/scipy/3.13.11.Dockerfile new file mode 100644 index 0000000..935b03f --- /dev/null +++ b/scipy/3.13.11.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.11 +ARG QUARTO_VERSION=1.8.27 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2026/02/03/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.13.12.Dockerfile b/scipy/3.13.12.Dockerfile new file mode 100644 index 0000000..8711c1d --- /dev/null +++ b/scipy/3.13.12.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.12 +ARG QUARTO_VERSION=1.9.36 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2026/04/07/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.13.13.Dockerfile b/scipy/3.13.13.Dockerfile new file mode 100644 index 0000000..c12b8c5 --- /dev/null +++ b/scipy/3.13.13.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.13 +ARG QUARTO_VERSION=1.9.38 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2026/06/10/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.13.14.Dockerfile b/scipy/3.13.14.Dockerfile new file mode 100644 index 0000000..773c3ef --- /dev/null +++ b/scipy/3.13.14.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.14 +ARG QUARTO_VERSION=1.10.18 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2026/08/05/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.13.15.Dockerfile b/scipy/3.13.15.Dockerfile new file mode 100644 index 0000000..3171cff --- /dev/null +++ b/scipy/3.13.15.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.15 +ARG QUARTO_VERSION=1.10.18 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2026/09/30/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.13.16.Dockerfile b/scipy/3.13.16.Dockerfile new file mode 100644 index 0000000..14b1405 --- /dev/null +++ b/scipy/3.13.16.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.16 +ARG QUARTO_VERSION=1.10.18 +ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.13.2.Dockerfile b/scipy/3.13.2.Dockerfile new file mode 100644 index 0000000..0276f17 --- /dev/null +++ b/scipy/3.13.2.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.2 +ARG QUARTO_VERSION=1.6.43 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/04/08/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.13.3.Dockerfile b/scipy/3.13.3.Dockerfile new file mode 100644 index 0000000..92f3ee3 --- /dev/null +++ b/scipy/3.13.3.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.3 +ARG QUARTO_VERSION=1.7.31 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/06/03/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.13.4.Dockerfile b/scipy/3.13.4.Dockerfile new file mode 100644 index 0000000..f375ef2 --- /dev/null +++ b/scipy/3.13.4.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.4 +ARG QUARTO_VERSION=1.7.31 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/06/11/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.13.5.Dockerfile b/scipy/3.13.5.Dockerfile new file mode 100644 index 0000000..bca10e6 --- /dev/null +++ b/scipy/3.13.5.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.5 +ARG QUARTO_VERSION=1.7.32 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/08/06/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.13.6.Dockerfile b/scipy/3.13.6.Dockerfile new file mode 100644 index 0000000..f2bf8bf --- /dev/null +++ b/scipy/3.13.6.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.6 +ARG QUARTO_VERSION=1.7.33 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/08/14/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.13.7.Dockerfile b/scipy/3.13.7.Dockerfile new file mode 100644 index 0000000..59d2fb8 --- /dev/null +++ b/scipy/3.13.7.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.7 +ARG QUARTO_VERSION=1.8.25 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/10/07/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.13.8.Dockerfile b/scipy/3.13.8.Dockerfile new file mode 100644 index 0000000..f2cd331 --- /dev/null +++ b/scipy/3.13.8.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.8 +ARG QUARTO_VERSION=1.8.25 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/10/14/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.13.9.Dockerfile b/scipy/3.13.9.Dockerfile new file mode 100644 index 0000000..a4817a8 --- /dev/null +++ b/scipy/3.13.9.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.9 +ARG QUARTO_VERSION=1.8.26 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/12/02/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.14.0.Dockerfile b/scipy/3.14.0.Dockerfile new file mode 100644 index 0000000..27832de --- /dev/null +++ b/scipy/3.14.0.Dockerfile @@ -0,0 +1,135 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.14.0 +ARG QUARTO_VERSION=1.8.26 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/12/02/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For tables wheels + libblosc2-dev \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + #numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables==3.10.1 \ + #widgetsnbextension \ + xlrd \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.14.1.Dockerfile b/scipy/3.14.1.Dockerfile new file mode 100644 index 0000000..de5b3eb --- /dev/null +++ b/scipy/3.14.1.Dockerfile @@ -0,0 +1,135 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.14.1 +ARG QUARTO_VERSION=1.8.26 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/12/05/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For tables wheels + libblosc2-dev \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + #numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables==3.10.1 \ + #widgetsnbextension \ + xlrd \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.14.2.Dockerfile b/scipy/3.14.2.Dockerfile new file mode 100644 index 0000000..7b2dbaf --- /dev/null +++ b/scipy/3.14.2.Dockerfile @@ -0,0 +1,133 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.14.2 +ARG QUARTO_VERSION=1.8.27 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2026/02/03/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + #widgetsnbextension \ + xlrd \ + && pip install git+https://github.com/PyTables/PyTables.git \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.14.3.Dockerfile b/scipy/3.14.3.Dockerfile new file mode 100644 index 0000000..9c09f6b --- /dev/null +++ b/scipy/3.14.3.Dockerfile @@ -0,0 +1,133 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.14.3 +ARG QUARTO_VERSION=1.9.36 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2026/04/07/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.14.4.Dockerfile b/scipy/3.14.4.Dockerfile new file mode 100644 index 0000000..31a7ab8 --- /dev/null +++ b/scipy/3.14.4.Dockerfile @@ -0,0 +1,133 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.14.4 +ARG QUARTO_VERSION=1.9.37 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2026/05/10/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.14.5.Dockerfile b/scipy/3.14.5.Dockerfile new file mode 100644 index 0000000..ef433cf --- /dev/null +++ b/scipy/3.14.5.Dockerfile @@ -0,0 +1,133 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.14.5 +ARG QUARTO_VERSION=1.9.38 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2026/06/10/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.14.6.Dockerfile b/scipy/3.14.6.Dockerfile new file mode 100644 index 0000000..4a77969 --- /dev/null +++ b/scipy/3.14.6.Dockerfile @@ -0,0 +1,133 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.14.6 +ARG QUARTO_VERSION=1.10.18 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2026/08/05/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/3.14.7.Dockerfile b/scipy/3.14.7.Dockerfile new file mode 100644 index 0000000..82d9273 --- /dev/null +++ b/scipy/3.14.7.Dockerfile @@ -0,0 +1,133 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.14.7 +ARG QUARTO_VERSION=1.10.18 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2026/09/30/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 02493f4..82b7f0b 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,20 +1,22 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.3.433 +ARG QUARTO_VERSION=1.10.19 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet -FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} ARG DEBIAN_FRONTEND=noninteractive +ARG NB_GID=100 + ARG BUILD_ON_IMAGE ARG QUARTO_VERSION ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST ARG BUILD_START -ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ QUARTO_VERSION=${QUARTO_VERSION} \ - CTAN_REPO=${CTAN_REPO} \ BUILD_DATE=${BUILD_START} ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH @@ -24,17 +26,23 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ && apt-get install -y --no-install-recommends \ fonts-roboto \ ghostscript \ + librsvg2-bin \ qpdf \ texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ ## Install quarto && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ && mkdir -p /opt/quarto \ && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ ## Remove quarto pandoc - && rm /opt/quarto/bin/tools/pandoc \ + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ ## Link to system pandoc - && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/pandoc \ + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ ## Tell APT about the TeX Live installation ## by building a dummy package using equivs && apt-get install -y --no-install-recommends equivs \ @@ -46,6 +54,9 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ && apt-get -y purge equivs \ && apt-get -y autoremove \ ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ | sh -s - --admin --no-path \ && mv ${HOME}/.TinyTeX /opt/TinyTeX \ @@ -72,6 +83,7 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ oberdiek \ titling \ && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ && chown -R root:${NB_GID} /opt/TinyTeX \ && chmod -R g+w /opt/TinyTeX \ && chmod -R g+wx /opt/TinyTeX/bin \ @@ -110,11 +122,6 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ tables \ #widgetsnbextension \ xlrd \ - ## Install facets - #&& cd /tmp \ - #&& git clone https://github.com/PAIR-code/facets.git \ - #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ - #&& cd / \ ## Clean up && rm -rf /tmp/* \ && rm -rf /var/lib/apt/lists/* \ @@ -122,3 +129,5 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ ${HOME}/.config \ ${HOME}/.local \ ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 07d0678..c5e4c23 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,14 +1,38 @@ -.env: - variables: - PYTHON_VERSION: "3.11.4" - CUDA_VERSION: "11.8.0" - LIBNVINFER_VERSION: "8.5.3-1" - LIBNVINFER_VERSION_MAJ: "8" +variables: + PYTHON_VERSION: "3.15.0" + CUDA_VERSION: "13.4.2" + CUDNN_VERSION_AMD64: "9.27.0.42" + CUDNN_VERSION_ARM64: "9.27.0.42" + CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.4" + CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.4" + TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ: "false" + +workflow: + rules: + - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == null && $PYTHON_VERSION =~ /^3.12/ + variables: + BASE_IMAGE_TAG: "12" + - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == "ubuntu" && $PYTHON_VERSION =~ /^3.12/ + variables: + BASE_IMAGE: "$CUDA_BASE_IMAGE" + BASE_IMAGE_TAG: "22.04" + CUDA_IMAGE_BASE_SUBTAG: "base-$BASE_IMAGE$BASE_IMAGE_TAG" + CUDA_IMAGE_DEVEL_SUBTAG: "devel-$BASE_IMAGE$BASE_IMAGE_TAG" + CUDA_IMAGE_SUBTAG: "runtime-$BASE_IMAGE$BASE_IMAGE_TAG" + - if: $CUDA_BASE_IMAGE == "ubuntu" + variables: + BASE_IMAGE: "$CUDA_BASE_IMAGE" + BASE_IMAGE_TAG: "$CUDA_BASE_IMAGE_TAG" + CUDA_IMAGE_BASE_SUBTAG: "base-$BASE_IMAGE$BASE_IMAGE_TAG" + CUDA_IMAGE_DEVEL_SUBTAG: "devel-$BASE_IMAGE$BASE_IMAGE_TAG" + CUDA_IMAGE_SUBTAG: "runtime-$BASE_IMAGE$BASE_IMAGE_TAG" + - if: $CI_COMMIT_BRANCH .before-script-all: &before-script-all - | if [[ ! -z "$CUDA_IMAGE_SUBTAG" ]]; then - export CUDA_IMAGE_FLAVOR=`echo $CUDA_IMAGE_SUBTAG | grep -o "runtime\|devel"` + export CUDA_IMAGE_FLAVOR=`echo $CUDA_IMAGE_SUBTAG | grep -o "base\|runtime\|devel"` if [[ "$CUDA_IMAGE_FLAVOR" == "devel" ]]; then export CUPTI_AVAILABLE=1 fi @@ -40,7 +64,6 @@ .build: image: glcr.b-data.ch/docker/docker:dind stage: build - extends: .env services: - name: glcr.b-data.ch/docker/docker:dind alias: docker @@ -56,7 +79,6 @@ .post: image: glcr.b-data.ch/docker/docker:dind stage: .post - extends: .env before_script: - *before-script-all @@ -73,17 +95,22 @@ build:latest-linux-amd64: --build-arg CUDA_IMAGE --build-arg CUDA_VERSION --build-arg CUDA_IMAGE_SUBTAG + --build-arg CUDA_IMAGE_LICENSE --build-arg PYTHON_VERSION --build-arg BUILD_START=$(date -uIseconds) -t $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-amd64 -t $CI_APP_REPO:latest${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-amd64 -f ver/latest.Dockerfile . - | - if [[ ! -z "$CUDA_IMAGE" ]]; then + if [[ ! -z "$CUDA_IMAGE" && "$CUDA_IMAGE_FLAVOR" != "base" ]]; then docker build \ + --build-arg CUDNN_VERSION_AMD64 \ + --build-arg CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 \ + --build-arg NCCL_VERSION_AMD64 \ + --build-arg NCCL_CUDA_VERSION_MAJ_MIN_AMD64 \ + --build-arg LIBNVINFER_VERSION_AMD64 \ + --build-arg LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 \ --build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-amd64 \ - --build-arg LIBNVINFER_VERSION \ - --build-arg LIBNVINFER_VERSION_MAJ \ --build-arg CUDA_IMAGE_FLAVOR \ --build-arg CUPTI_AVAILABLE \ --build-arg BUILD_START=$(date -uIseconds) \ @@ -111,17 +138,22 @@ build:latest-linux-arm64v8: --build-arg CUDA_IMAGE --build-arg CUDA_VERSION --build-arg CUDA_IMAGE_SUBTAG + --build-arg CUDA_IMAGE_LICENSE --build-arg PYTHON_VERSION --build-arg BUILD_START=$(date -uIseconds) -t $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 -t $CI_APP_REPO:latest${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 -f ver/latest.Dockerfile . - | - if [[ ! -z "$CUDA_IMAGE" ]]; then + if [[ ! -z "$CUDA_IMAGE" && "$CUDA_IMAGE_FLAVOR" != "base" ]]; then docker build \ + --build-arg CUDNN_VERSION_ARM64 \ + --build-arg CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 \ + --build-arg NCCL_VERSION_ARM64 \ + --build-arg NCCL_CUDA_VERSION_MAJ_MIN_ARM64 \ + --build-arg LIBNVINFER_VERSION_ARM64 \ + --build-arg LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 \ --build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 \ - --build-arg LIBNVINFER_VERSION \ - --build-arg LIBNVINFER_VERSION_MAJ \ --build-arg CUDA_IMAGE_FLAVOR \ --build-arg CUPTI_AVAILABLE \ --build-arg BUILD_START=$(date -uIseconds) \ @@ -148,15 +180,14 @@ build:version-linux-amd64: --build-arg BASE_IMAGE_TAG --build-arg CUDA_IMAGE --build-arg CUDA_IMAGE_SUBTAG + --build-arg CUDA_IMAGE_LICENSE --build-arg BUILD_START=$(date -uIseconds) -t $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-amd64 -f ver/$PYTHON_VERSION.Dockerfile . - | - if [[ ! -z "$CUDA_IMAGE" ]]; then + if [[ ! -z "$CUDA_IMAGE" && "$CUDA_IMAGE_FLAVOR" != "base" ]]; then docker build \ --build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-amd64 \ - --build-arg LIBNVINFER_VERSION \ - --build-arg LIBNVINFER_VERSION_MAJ \ --build-arg CUDA_IMAGE_FLAVOR \ --build-arg CUPTI_AVAILABLE \ --build-arg BUILD_START=$(date -uIseconds) \ @@ -181,15 +212,14 @@ build:version-linux-arm64v8: --build-arg BASE_IMAGE_TAG --build-arg CUDA_IMAGE --build-arg CUDA_IMAGE_SUBTAG + --build-arg CUDA_IMAGE_LICENSE --build-arg BUILD_START=$(date -uIseconds) -t $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 -f ver/$PYTHON_VERSION.Dockerfile . - | - if [[ ! -z "$CUDA_IMAGE" ]]; then + if [[ ! -z "$CUDA_IMAGE" && "$CUDA_IMAGE_FLAVOR" != "base" ]]; then docker build \ --build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 \ - --build-arg LIBNVINFER_VERSION \ - --build-arg LIBNVINFER_VERSION_MAJ \ --build-arg CUDA_IMAGE_FLAVOR \ --build-arg CUPTI_AVAILABLE \ --build-arg BUILD_START=$(date -uIseconds) \ @@ -289,6 +319,24 @@ build-manifest:version-linux-multiarch: $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR + + if [[ "$TAG_VERSION_MAJ_MIN" == "true" ]]; then + docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR $CI_MANIFEST_LIST + if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then + docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR \ + $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 + fi + docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR + fi + + if [[ "$TAG_VERSION_MAJ" == "true" ]]; then + docker manifest create $CI_APP_REPO:$VERSION_MAJ${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR $CI_MANIFEST_LIST + if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then + docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR \ + $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 + fi + docker manifest push $CI_APP_REPO:$VERSION_MAJ${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR + fi - | if [[ "$CUDA_IMAGE_FLAVOR" == "runtime" ]]; then docker manifest create $CI_APP_REPO:$CI_APP_TAG $CI_MANIFEST_LIST @@ -297,6 +345,24 @@ build-manifest:version-linux-multiarch: $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$CI_APP_TAG + + if [[ "$TAG_VERSION_MAJ_MIN" == "true" ]]; then + docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN $CI_MANIFEST_LIST + if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then + docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN \ + $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 + fi + docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN + fi + + if [[ "$TAG_VERSION_MAJ" == "true" ]]; then + docker manifest create $CI_APP_REPO:$VERSION_MAJ $CI_MANIFEST_LIST + if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then + docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ \ + $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 + fi + docker manifest push $CI_APP_REPO:$VERSION_MAJ + fi fi rules: - if: $CI_COMMIT_BRANCH == "freeze-version" @@ -365,7 +431,7 @@ trigger-version-cuda-build: changes: - ver/$PYTHON_VERSION.Dockerfile -trigger-latest-cuda-devel-build: +trigger-latest-cuda-self-build: extends: .post stage: .post needs: ["build-manifest:latest-linux-multiarch"] @@ -373,6 +439,7 @@ trigger-latest-cuda-devel-build: - apk upgrade --no-cache - apk add --update --no-cache curl script: + - curl -X POST -F token=$CUDA_PYTHON_VER -F ref=main -F "variables[CUDA_IMAGE_SUBTAG]=$CUDA_IMAGE_BASE_SUBTAG" https://gitlab.b-data.ch/api/v4/projects/318/trigger/pipeline - curl -X POST -F token=$CUDA_PYTHON_VER -F ref=main -F "variables[CUDA_IMAGE_SUBTAG]=$CUDA_IMAGE_DEVEL_SUBTAG" https://gitlab.b-data.ch/api/v4/projects/318/trigger/pipeline rules: - if: $CI_COMMIT_BRANCH == "main" && $CUDA_IMAGE_SUBTAG =~ /runtime/ @@ -380,7 +447,7 @@ trigger-latest-cuda-devel-build: - ver/latest.Dockerfile - cuda/latest.Dockerfile -trigger-version-cuda-devel-build: +trigger-version-cuda-self-build: extends: .post stage: .post needs: ["build-manifest:version-linux-multiarch"] @@ -388,6 +455,7 @@ trigger-version-cuda-devel-build: - apk upgrade --no-cache - apk add --update --no-cache curl script: + - curl -X POST -F token=$CUDA_PYTHON_VER -F ref=freeze-version -F "variables[CUDA_IMAGE_SUBTAG]=$CUDA_IMAGE_BASE_SUBTAG" https://gitlab.b-data.ch/api/v4/projects/318/trigger/pipeline - curl -X POST -F token=$CUDA_PYTHON_VER -F ref=freeze-version -F "variables[CUDA_IMAGE_SUBTAG]=$CUDA_IMAGE_DEVEL_SUBTAG" https://gitlab.b-data.ch/api/v4/projects/318/trigger/pipeline rules: - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_IMAGE_SUBTAG =~ /runtime/ diff --git a/ver/3.10.13.Dockerfile b/ver/3.10.13.Dockerfile new file mode 100644 index 0000000..2e78f9f --- /dev/null +++ b/ver/3.10.13.Dockerfile @@ -0,0 +1,70 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=11.8.0 +ARG PYTHON_VERSION=3.10.13 + +FROM glcr.b-data.ch/python/psi/${PYTHON_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +LABEL org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.source="https://gitlab.b-data.ch/python/docker-stack" \ + org.opencontainers.image.vendor="b-data GmbH" \ + org.opencontainers.image.authors="Olivier Benz " + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.11.10.Dockerfile b/ver/3.11.10.Dockerfile new file mode 100644 index 0000000..e399790 --- /dev/null +++ b/ver/3.11.10.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=11.8.0 +ARG PYTHON_VERSION=3.11.10 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.11.4.Dockerfile b/ver/3.11.4.Dockerfile new file mode 100644 index 0000000..2caa175 --- /dev/null +++ b/ver/3.11.4.Dockerfile @@ -0,0 +1,70 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=11.8.0 +ARG PYTHON_VERSION=3.11.4 + +FROM glcr.b-data.ch/python/psi/${PYTHON_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +LABEL org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.source="https://gitlab.b-data.ch/python/docker-stack" \ + org.opencontainers.image.vendor="b-data GmbH" \ + org.opencontainers.image.authors="Olivier Benz " + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.11.5.Dockerfile b/ver/3.11.5.Dockerfile new file mode 100644 index 0000000..4eeb9af --- /dev/null +++ b/ver/3.11.5.Dockerfile @@ -0,0 +1,70 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=11.8.0 +ARG PYTHON_VERSION=3.11.5 + +FROM glcr.b-data.ch/python/psi/${PYTHON_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +LABEL org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.source="https://gitlab.b-data.ch/python/docker-stack" \ + org.opencontainers.image.vendor="b-data GmbH" \ + org.opencontainers.image.authors="Olivier Benz " + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.11.6.Dockerfile b/ver/3.11.6.Dockerfile new file mode 100644 index 0000000..b1f0bcf --- /dev/null +++ b/ver/3.11.6.Dockerfile @@ -0,0 +1,70 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=11.8.0 +ARG PYTHON_VERSION=3.11.6 + +FROM glcr.b-data.ch/python/psi/${PYTHON_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +LABEL org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.source="https://gitlab.b-data.ch/python/docker-stack" \ + org.opencontainers.image.vendor="b-data GmbH" \ + org.opencontainers.image.authors="Olivier Benz " + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.11.7.Dockerfile b/ver/3.11.7.Dockerfile new file mode 100644 index 0000000..83760e5 --- /dev/null +++ b/ver/3.11.7.Dockerfile @@ -0,0 +1,83 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=11.8.0 +ARG PYTHON_VERSION=3.11.7 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +LABEL org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.source="https://gitlab.b-data.ch/python/docker-stack" \ + org.opencontainers.image.vendor="b-data GmbH" \ + org.opencontainers.image.authors="Olivier Benz " + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.11.8.Dockerfile b/ver/3.11.8.Dockerfile new file mode 100644 index 0000000..896d9c1 --- /dev/null +++ b/ver/3.11.8.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=11.8.0 +ARG PYTHON_VERSION=3.11.8 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.11.9.Dockerfile b/ver/3.11.9.Dockerfile new file mode 100644 index 0000000..d22e4ef --- /dev/null +++ b/ver/3.11.9.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=11.8.0 +ARG PYTHON_VERSION=3.11.9 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.12.0.Dockerfile b/ver/3.12.0.Dockerfile new file mode 100644 index 0000000..982efd0 --- /dev/null +++ b/ver/3.12.0.Dockerfile @@ -0,0 +1,70 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=11.8.0 +ARG PYTHON_VERSION=3.12.0 + +FROM glcr.b-data.ch/python/psi/${PYTHON_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +LABEL org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.source="https://gitlab.b-data.ch/python/docker-stack" \ + org.opencontainers.image.vendor="b-data GmbH" \ + org.opencontainers.image.authors="Olivier Benz " + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.12.1.Dockerfile b/ver/3.12.1.Dockerfile new file mode 100644 index 0000000..b715d20 --- /dev/null +++ b/ver/3.12.1.Dockerfile @@ -0,0 +1,83 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=11.8.0 +ARG PYTHON_VERSION=3.12.1 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +LABEL org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.source="https://gitlab.b-data.ch/python/docker-stack" \ + org.opencontainers.image.vendor="b-data GmbH" \ + org.opencontainers.image.authors="Olivier Benz " + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.12.10.Dockerfile b/ver/3.12.10.Dockerfile new file mode 100644 index 0000000..fe0e13e --- /dev/null +++ b/ver/3.12.10.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.9.0 +ARG PYTHON_VERSION=3.12.10 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.12.11.Dockerfile b/ver/3.12.11.Dockerfile new file mode 100644 index 0000000..b747549 --- /dev/null +++ b/ver/3.12.11.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.9.1 +ARG PYTHON_VERSION=3.12.11 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.12.2.Dockerfile b/ver/3.12.2.Dockerfile new file mode 100644 index 0000000..989eebe --- /dev/null +++ b/ver/3.12.2.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=11.8.0 +ARG PYTHON_VERSION=3.12.2 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.12.3.Dockerfile b/ver/3.12.3.Dockerfile new file mode 100644 index 0000000..10697d7 --- /dev/null +++ b/ver/3.12.3.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.5.0 +ARG PYTHON_VERSION=3.12.3 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.12.4.Dockerfile b/ver/3.12.4.Dockerfile new file mode 100644 index 0000000..3df6b7d --- /dev/null +++ b/ver/3.12.4.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.5.1 +ARG PYTHON_VERSION=3.12.4 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.12.5.Dockerfile b/ver/3.12.5.Dockerfile new file mode 100644 index 0000000..a866636 --- /dev/null +++ b/ver/3.12.5.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.6.1 +ARG PYTHON_VERSION=3.12.5 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.12.6.Dockerfile b/ver/3.12.6.Dockerfile new file mode 100644 index 0000000..89a3e2e --- /dev/null +++ b/ver/3.12.6.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.6.1 +ARG PYTHON_VERSION=3.12.6 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.12.7.Dockerfile b/ver/3.12.7.Dockerfile new file mode 100644 index 0000000..ea59eb7 --- /dev/null +++ b/ver/3.12.7.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.6.3 +ARG PYTHON_VERSION=3.12.7 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.12.8.Dockerfile b/ver/3.12.8.Dockerfile new file mode 100644 index 0000000..b313aa0 --- /dev/null +++ b/ver/3.12.8.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.8.0 +ARG PYTHON_VERSION=3.12.8 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.12.9.Dockerfile b/ver/3.12.9.Dockerfile new file mode 100644 index 0000000..10d26cc --- /dev/null +++ b/ver/3.12.9.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.8.1 +ARG PYTHON_VERSION=3.12.9 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.13.0.Dockerfile b/ver/3.13.0.Dockerfile new file mode 100644 index 0000000..c4c3ec5 --- /dev/null +++ b/ver/3.13.0.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.6.3 +ARG PYTHON_VERSION=3.13.0 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.13.1.Dockerfile b/ver/3.13.1.Dockerfile new file mode 100644 index 0000000..4799e09 --- /dev/null +++ b/ver/3.13.1.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.8.0 +ARG PYTHON_VERSION=3.13.1 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.13.10.Dockerfile b/ver/3.13.10.Dockerfile new file mode 100644 index 0000000..0ccb55e --- /dev/null +++ b/ver/3.13.10.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.0.2 +ARG PYTHON_VERSION=3.13.10 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.13.11.Dockerfile b/ver/3.13.11.Dockerfile new file mode 100644 index 0000000..3f3fc3f --- /dev/null +++ b/ver/3.13.11.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.1.1 +ARG PYTHON_VERSION=3.13.11 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.13.12.Dockerfile b/ver/3.13.12.Dockerfile new file mode 100644 index 0000000..8df82df --- /dev/null +++ b/ver/3.13.12.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.2.0 +ARG PYTHON_VERSION=3.13.12 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.13.13.Dockerfile b/ver/3.13.13.Dockerfile new file mode 100644 index 0000000..5ed32e8 --- /dev/null +++ b/ver/3.13.13.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.3.0 +ARG PYTHON_VERSION=3.13.13 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.13.14.Dockerfile b/ver/3.13.14.Dockerfile new file mode 100644 index 0000000..85a0f2c --- /dev/null +++ b/ver/3.13.14.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.3.1 +ARG PYTHON_VERSION=3.13.14 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.13.15.Dockerfile b/ver/3.13.15.Dockerfile new file mode 100644 index 0000000..ca92d99 --- /dev/null +++ b/ver/3.13.15.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.4.2 +ARG PYTHON_VERSION=3.13.15 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.13.16.Dockerfile b/ver/3.13.16.Dockerfile new file mode 100644 index 0000000..856a66b --- /dev/null +++ b/ver/3.13.16.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.4.2 +ARG PYTHON_VERSION=3.13.16 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.13.2.Dockerfile b/ver/3.13.2.Dockerfile new file mode 100644 index 0000000..90edb78 --- /dev/null +++ b/ver/3.13.2.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.8.1 +ARG PYTHON_VERSION=3.13.2 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.13.3.Dockerfile b/ver/3.13.3.Dockerfile new file mode 100644 index 0000000..d2fbb5d --- /dev/null +++ b/ver/3.13.3.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.9.0 +ARG PYTHON_VERSION=3.13.3 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.13.4.Dockerfile b/ver/3.13.4.Dockerfile new file mode 100644 index 0000000..5c4945c --- /dev/null +++ b/ver/3.13.4.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.9.0 +ARG PYTHON_VERSION=3.13.4 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.13.5.Dockerfile b/ver/3.13.5.Dockerfile new file mode 100644 index 0000000..aafb675 --- /dev/null +++ b/ver/3.13.5.Dockerfile @@ -0,0 +1,90 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.9.1 +ARG PYTHON_VERSION=3.13.5 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.13.6.Dockerfile b/ver/3.13.6.Dockerfile new file mode 100644 index 0000000..74afde9 --- /dev/null +++ b/ver/3.13.6.Dockerfile @@ -0,0 +1,90 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.9.1 +ARG PYTHON_VERSION=3.13.6 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.13.7.Dockerfile b/ver/3.13.7.Dockerfile new file mode 100644 index 0000000..b177af1 --- /dev/null +++ b/ver/3.13.7.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.0.1 +ARG PYTHON_VERSION=3.13.7 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.13.8.Dockerfile b/ver/3.13.8.Dockerfile new file mode 100644 index 0000000..fc468ea --- /dev/null +++ b/ver/3.13.8.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.0.1 +ARG PYTHON_VERSION=3.13.8 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.13.9.Dockerfile b/ver/3.13.9.Dockerfile new file mode 100644 index 0000000..5b51091 --- /dev/null +++ b/ver/3.13.9.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.0.2 +ARG PYTHON_VERSION=3.13.9 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.14.0.Dockerfile b/ver/3.14.0.Dockerfile new file mode 100644 index 0000000..a3642a3 --- /dev/null +++ b/ver/3.14.0.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.0.2 +ARG PYTHON_VERSION=3.14.0 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.14.1.Dockerfile b/ver/3.14.1.Dockerfile new file mode 100644 index 0000000..1555ec3 --- /dev/null +++ b/ver/3.14.1.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.0.2 +ARG PYTHON_VERSION=3.14.1 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.14.2.Dockerfile b/ver/3.14.2.Dockerfile new file mode 100644 index 0000000..8b80488 --- /dev/null +++ b/ver/3.14.2.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.1.1 +ARG PYTHON_VERSION=3.14.2 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.14.3.Dockerfile b/ver/3.14.3.Dockerfile new file mode 100644 index 0000000..b0adf12 --- /dev/null +++ b/ver/3.14.3.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.2.0 +ARG PYTHON_VERSION=3.14.3 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.14.4.Dockerfile b/ver/3.14.4.Dockerfile new file mode 100644 index 0000000..4d2bbb3 --- /dev/null +++ b/ver/3.14.4.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.2.1 +ARG PYTHON_VERSION=3.14.4 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.14.5.Dockerfile b/ver/3.14.5.Dockerfile new file mode 100644 index 0000000..b965786 --- /dev/null +++ b/ver/3.14.5.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.3.0 +ARG PYTHON_VERSION=3.14.5 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.14.6.Dockerfile b/ver/3.14.6.Dockerfile new file mode 100644 index 0000000..ddccfdd --- /dev/null +++ b/ver/3.14.6.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.3.1 +ARG PYTHON_VERSION=3.14.6 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/3.14.7.Dockerfile b/ver/3.14.7.Dockerfile new file mode 100644 index 0000000..05e26f2 --- /dev/null +++ b/ver/3.14.7.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.4.2 +ARG PYTHON_VERSION=3.14.7 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] diff --git a/ver/latest.Dockerfile b/ver/latest.Dockerfile index d769fed..80b7a03 100644 --- a/ver/latest.Dockerfile +++ b/ver/latest.Dockerfile @@ -1,20 +1,15 @@ ARG BASE_IMAGE=debian -ARG BASE_IMAGE_TAG=12 +ARG BASE_IMAGE_TAG=13 ARG CUDA_IMAGE ARG CUDA_IMAGE_SUBTAG ARG BLAS=libopenblas-dev ARG CUDA_VERSION ARG PYTHON_VERSION -FROM glcr.b-data.ch/python/psi/${PYTHON_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as psi +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} -LABEL org.opencontainers.image.licenses="MIT" \ - org.opencontainers.image.source="https://gitlab.b-data.ch/python/docker-stack" \ - org.opencontainers.image.vendor="b-data GmbH" \ - org.opencontainers.image.authors="Olivier Benz " - ARG DEBIAN_FRONTEND=noninteractive ARG BASE_IMAGE @@ -26,6 +21,17 @@ ARG CUDA_VERSION ARG PYTHON_VERSION ARG BUILD_START +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ @@ -43,9 +49,14 @@ RUN apt-get update \ && apt-get install -y --no-install-recommends \ ca-certificates \ libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ libjs-sphinxdoc \ liblapack-dev \ + libncurses-dev \ ${BLAS} \ + libreadline-dev \ + libsqlite3-dev \ locales \ netbase \ pkg-config \ @@ -53,6 +64,23 @@ RUN apt-get update \ unzip \ zip \ zlib1g-dev \ + && if ([ "${BASE_IMAGE%:*}" = "debian" ] && dpkg --compare-versions "${BASE_IMAGE#*:}" ge "13") \ + || ([ "${BASE_IMAGE%:*}" = "ubuntu" ] && dpkg --compare-versions "${BASE_IMAGE#*:}" ge "26"); then \ + apt-get install -y --no-install-recommends libmpdec-dev; \ + fi \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ ## Update locale && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ && locale-gen \