Skip to content

Commit d75487a

Browse files
committed
Freeze Python v3.11.5
1 parent 4cca8c6 commit d75487a

File tree

4 files changed

+372
-0
lines changed

4 files changed

+372
-0
lines changed

Diff for: base/3.11.5.Dockerfile

+105
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
ARG BASE_IMAGE=debian
2+
ARG BASE_IMAGE_TAG=12
3+
ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver
4+
ARG PYTHON_VERSION=3.11.5
5+
ARG GIT_VERSION=2.42.0
6+
ARG GIT_LFS_VERSION=3.4.0
7+
ARG PANDOC_VERSION=3.1.1
8+
9+
FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi
10+
FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi
11+
12+
FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION}
13+
14+
ARG DEBIAN_FRONTEND=noninteractive
15+
16+
ARG BUILD_ON_IMAGE
17+
ARG GIT_VERSION
18+
ARG GIT_LFS_VERSION
19+
ARG PANDOC_VERSION
20+
ARG BUILD_START
21+
22+
ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \
23+
GIT_VERSION=${GIT_VERSION} \
24+
GIT_LFS_VERSION=${GIT_LFS_VERSION} \
25+
PANDOC_VERSION=${PANDOC_VERSION} \
26+
BUILD_DATE=${BUILD_START}
27+
28+
## Install Git
29+
COPY --from=gsi /usr/local /usr/local
30+
## Install Git LFS
31+
COPY --from=glfsi /usr/local /usr/local
32+
33+
RUN dpkgArch="$(dpkg --print-architecture)" \
34+
&& apt-get update \
35+
&& apt-get -y install --no-install-recommends \
36+
bash-completion \
37+
build-essential \
38+
curl \
39+
file \
40+
fontconfig \
41+
g++ \
42+
gcc \
43+
gfortran \
44+
gnupg \
45+
htop \
46+
info \
47+
jq \
48+
libclang-dev \
49+
man-db \
50+
nano \
51+
procps \
52+
psmisc \
53+
screen \
54+
sudo \
55+
swig \
56+
tmux \
57+
vim-tiny \
58+
wget \
59+
zsh \
60+
## Git: Additional runtime dependencies
61+
libcurl3-gnutls \
62+
liberror-perl \
63+
## Git: Additional runtime recommendations
64+
less \
65+
ssh-client \
66+
## Python: Additional dev dependencies
67+
&& if [ -z "$PYTHON_VERSION" ]; then \
68+
apt-get -y install --no-install-recommends \
69+
python3-dev \
70+
## Install Python package installer
71+
## (dep: python3-distutils, python3-setuptools and python3-wheel)
72+
python3-pip \
73+
## Install venv module for python3
74+
python3-venv; \
75+
## make some useful symlinks that are expected to exist
76+
## ("/usr/bin/python" and friends)
77+
for src in pydoc3 python3 python3-config; do \
78+
dst="$(echo "$src" | tr -d 3)"; \
79+
[ -s "/usr/bin/$src" ]; \
80+
[ ! -e "/usr/bin/$dst" ]; \
81+
ln -svT "$src" "/usr/bin/$dst"; \
82+
done; \
83+
else \
84+
## Force update pip, setuptools and wheel
85+
curl -sLO https://bootstrap.pypa.io/get-pip.py; \
86+
python get-pip.py \
87+
pip \
88+
setuptools \
89+
wheel; \
90+
rm get-pip.py; \
91+
fi \
92+
## Git: Set default branch name to main
93+
&& git config --system init.defaultBranch main \
94+
## Git: Store passwords for one hour in memory
95+
&& git config --system credential.helper "cache --timeout=3600" \
96+
## Git: Merge the default branch from the default remote when "git pull" is run
97+
&& git config --system pull.rebase false \
98+
## Install pandoc
99+
&& curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \
100+
&& dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \
101+
&& rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \
102+
## Clean up
103+
&& rm -rf /tmp/* \
104+
&& rm -rf /var/lib/apt/lists/* \
105+
${HOME}/.cache

Diff for: cuda/3.11.5.Dockerfile

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
ARG BUILD_ON_IMAGE
2+
3+
ARG CUDA_HOME=/usr/local/cuda
4+
ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf
5+
6+
FROM ${BUILD_ON_IMAGE}
7+
8+
## CUDA_IMAGE
9+
## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04
10+
## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04
11+
ARG LIBNVINFER_VERSION=8.5.3-1
12+
ARG LIBNVINFER_VERSION_MAJ=8
13+
14+
ARG CUDA_IMAGE_FLAVOR
15+
ARG CUPTI_AVAILABLE
16+
ARG BUILD_START
17+
18+
ARG CUDA_HOME
19+
ARG NVBLAS_CONFIG_FILE
20+
21+
ENV CUDA_HOME=${CUDA_HOME} \
22+
NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \
23+
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \
24+
BUILD_DATE=${BUILD_START}
25+
26+
RUN cpuBlasLib="$(update-alternatives --query \
27+
libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \
28+
&& dpkgArch="$(dpkg --print-architecture)" \
29+
## Unminimise if the system has been minimised
30+
&& if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \
31+
yes | unminimize; \
32+
fi \
33+
## NVBLAS log configuration
34+
&& touch /var/log/nvblas.log \
35+
&& chown :users /var/log/nvblas.log \
36+
&& chmod g+rw /var/log/nvblas.log \
37+
## NVBLAS configuration using all compute-capable GPUs
38+
&& echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \
39+
&& echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \
40+
&& echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \
41+
## Install TensorRT
42+
## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64)
43+
&& if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \
44+
## Install development libraries and headers
45+
## if devel-flavor of CUDA image is used
46+
if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \
47+
CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \
48+
apt-get update; \
49+
apt-get -y install --no-install-recommends \
50+
libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \
51+
libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \
52+
libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \
53+
libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \
54+
## Keep apt from auto upgrading the libnvinfer packages
55+
apt-mark hold \
56+
libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \
57+
libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \
58+
libnvinfer${LIBNVINFER_VERSION_MAJ} \
59+
libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \
60+
## TensorFlow versions < 2.12 expect TensorRT libraries version 7
61+
## Create symlink when only TensorRT libraries version > 7 are available
62+
trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \
63+
grep 'libnvinfer.so.[0-9]\+$'); \
64+
trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \
65+
grep 'libnvinfer_plugin.so.[0-9]\+$'); \
66+
if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \
67+
ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \
68+
ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \
69+
fi \
70+
fi \
71+
## Clean up
72+
&& rm -rf /var/lib/apt/lists/*

Diff for: scipy/3.11.5.Dockerfile

+125
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base
2+
ARG PYTHON_VERSION=3.11.5
3+
ARG QUARTO_VERSION=1.3.450
4+
ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2023/10/02/tlnet
5+
6+
FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION}
7+
8+
ARG DEBIAN_FRONTEND=noninteractive
9+
10+
ARG BUILD_ON_IMAGE
11+
ARG QUARTO_VERSION
12+
ARG CTAN_REPO
13+
ARG BUILD_START
14+
15+
ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \
16+
QUARTO_VERSION=${QUARTO_VERSION} \
17+
CTAN_REPO=${CTAN_REPO} \
18+
BUILD_DATE=${BUILD_START}
19+
20+
ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH
21+
22+
RUN dpkgArch="$(dpkg --print-architecture)" \
23+
&& apt-get update \
24+
&& apt-get install -y --no-install-recommends \
25+
fonts-roboto \
26+
ghostscript \
27+
librsvg2-bin \
28+
qpdf \
29+
texinfo \
30+
## Install quarto
31+
&& curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \
32+
&& mkdir -p /opt/quarto \
33+
&& tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \
34+
&& rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \
35+
## Remove quarto pandoc
36+
&& rm /opt/quarto/bin/tools/pandoc \
37+
## Link to system pandoc
38+
&& ln -s /usr/bin/pandoc /opt/quarto/bin/tools/pandoc \
39+
## Tell APT about the TeX Live installation
40+
## by building a dummy package using equivs
41+
&& apt-get install -y --no-install-recommends equivs \
42+
&& cd /tmp \
43+
&& wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \
44+
&& equivs-build debian-* \
45+
&& mv texlive-local*.deb texlive-local.deb \
46+
&& dpkg -i texlive-local.deb \
47+
&& apt-get -y purge equivs \
48+
&& apt-get -y autoremove \
49+
## Admin-based install of TinyTeX
50+
&& wget -qO- "https://yihui.org/tinytex/install-unx.sh" \
51+
| sh -s - --admin --no-path \
52+
&& mv ${HOME}/.TinyTeX /opt/TinyTeX \
53+
&& sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \
54+
/opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \
55+
&& ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \
56+
/opt/TinyTeX/bin/linux \
57+
&& /opt/TinyTeX/bin/linux/tlmgr path add \
58+
&& tlmgr update --self \
59+
## TeX packages as requested by the community
60+
&& curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \
61+
&& tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \
62+
&& rm -f pkgs-yihui.txt \
63+
## TeX packages as in rocker/verse
64+
&& tlmgr install \
65+
context \
66+
pdfcrop \
67+
## TeX packages as in jupyter/scipy-notebook
68+
&& tlmgr install \
69+
cm-super \
70+
dvipng \
71+
## TeX packages specific for nbconvert
72+
&& tlmgr install \
73+
oberdiek \
74+
titling \
75+
&& tlmgr path add \
76+
&& chown -R root:${NB_GID} /opt/TinyTeX \
77+
&& chmod -R g+w /opt/TinyTeX \
78+
&& chmod -R g+wx /opt/TinyTeX/bin \
79+
## Make the TeX Live fonts available as system fonts
80+
&& cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \
81+
/etc/fonts/conf.d/09-texlive.conf \
82+
&& fc-cache -fsv \
83+
## Install Python packages
84+
&& export PIP_BREAK_SYSTEM_PACKAGES=1 \
85+
&& pip install \
86+
altair \
87+
beautifulsoup4 \
88+
bokeh \
89+
bottleneck \
90+
cloudpickle \
91+
cython \
92+
dask \
93+
dill \
94+
h5py \
95+
#ipympl \
96+
#ipywidgets \
97+
matplotlib \
98+
numba \
99+
numexpr \
100+
numpy \
101+
pandas \
102+
patsy \
103+
protobuf \
104+
scikit-image \
105+
scikit-learn \
106+
scipy \
107+
seaborn \
108+
sqlalchemy \
109+
statsmodels \
110+
sympy \
111+
tables \
112+
#widgetsnbextension \
113+
xlrd \
114+
## Install facets
115+
#&& cd /tmp \
116+
#&& git clone https://github.com/PAIR-code/facets.git \
117+
#&& jupyter nbextension install facets/facets-dist/ --sys-prefix \
118+
#&& cd / \
119+
## Clean up
120+
&& rm -rf /tmp/* \
121+
&& rm -rf /var/lib/apt/lists/* \
122+
${HOME}/.cache \
123+
${HOME}/.config \
124+
${HOME}/.local \
125+
${HOME}/.wget-hsts

Diff for: ver/3.11.5.Dockerfile

+70
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
ARG BASE_IMAGE=debian
2+
ARG BASE_IMAGE_TAG=12
3+
ARG CUDA_IMAGE
4+
ARG CUDA_IMAGE_SUBTAG
5+
ARG BLAS=libopenblas-dev
6+
ARG CUDA_VERSION=11.8.0
7+
ARG PYTHON_VERSION=3.11.5
8+
9+
FROM glcr.b-data.ch/python/psi/${PYTHON_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as psi
10+
11+
FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG}
12+
13+
LABEL org.opencontainers.image.licenses="MIT" \
14+
org.opencontainers.image.source="https://gitlab.b-data.ch/python/docker-stack" \
15+
org.opencontainers.image.vendor="b-data GmbH" \
16+
org.opencontainers.image.authors="Olivier Benz <[email protected]>"
17+
18+
ARG DEBIAN_FRONTEND=noninteractive
19+
20+
ARG BASE_IMAGE
21+
ARG BASE_IMAGE_TAG
22+
ARG CUDA_IMAGE
23+
ARG CUDA_IMAGE_SUBTAG
24+
ARG BLAS
25+
ARG CUDA_VERSION
26+
ARG PYTHON_VERSION
27+
ARG BUILD_START
28+
29+
ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \
30+
CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \
31+
PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \
32+
PYTHON_VERSION=${PYTHON_VERSION} \
33+
BUILD_DATE=${BUILD_START}
34+
35+
ENV LANG=en_US.UTF-8 \
36+
TERM=xterm \
37+
TZ=Etc/UTC
38+
39+
## Install Python
40+
COPY --from=psi /usr/local /usr/local
41+
42+
RUN apt-get update \
43+
&& apt-get install -y --no-install-recommends \
44+
ca-certificates \
45+
libexpat1-dev \
46+
libjs-sphinxdoc \
47+
liblapack-dev \
48+
${BLAS} \
49+
locales \
50+
netbase \
51+
pkg-config \
52+
tzdata \
53+
unzip \
54+
zip \
55+
zlib1g-dev \
56+
## Update locale
57+
&& sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \
58+
&& locale-gen \
59+
&& update-locale LANG=$LANG \
60+
## Switch BLAS/LAPACK (manual mode)
61+
&& if [ ${BLAS} = "libopenblas-dev" ]; then \
62+
update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \
63+
/usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \
64+
update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \
65+
/usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \
66+
fi \
67+
## Clean up
68+
&& rm -rf /var/lib/apt/lists/*
69+
70+
CMD ["python3"]

0 commit comments

Comments
 (0)