-
-
Notifications
You must be signed in to change notification settings - Fork 234
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
build & push all image configurations (python-only mode)
- Loading branch information
1 parent
6a7acde
commit c833f1f
Showing
5 changed files
with
175 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -303,6 +303,107 @@ RUN MPLBACKEND=Agg python -c "import matplotlib.pyplot" && \ | |
|
||
USER $NB_UID | ||
|
||
WORKDIR $HOME | ||
|
||
############################################################################ | ||
################ Dependency: jupyter/datascience-notebook ################## | ||
############################################################################ | ||
|
||
# Copyright (c) Jupyter Development Team. | ||
# Distributed under the terms of the Modified BSD License. | ||
|
||
LABEL maintainer="Jupyter Project <[email protected]>" | ||
|
||
# Set when building on Travis so that certain long-running build steps can | ||
# be skipped to shorten build time. | ||
ARG TEST_ONLY_BUILD | ||
|
||
# Fix DL4006 | ||
SHELL ["/bin/bash", "-o", "pipefail", "-c"] | ||
|
||
USER root | ||
|
||
# Julia installation | ||
# Default values can be overridden at build time | ||
# (ARGS are in lower case to distinguish them from ENV) | ||
# Check https://julialang.org/downloads/ | ||
ARG julia_version="1.5.3" | ||
# SHA256 checksum | ||
ARG julia_checksum="f190c938dd6fed97021953240523c9db448ec0a6760b574afd4e9924ab5615f1" | ||
|
||
# R pre-requisites | ||
RUN apt-get update && \ | ||
apt-get install -y --no-install-recommends \ | ||
fonts-dejavu \ | ||
gfortran \ | ||
gcc && \ | ||
apt-get clean && rm -rf /var/lib/apt/lists/* | ||
|
||
# Julia dependencies | ||
# install Julia packages in /opt/julia instead of $HOME | ||
ENV JULIA_DEPOT_PATH=/opt/julia \ | ||
JULIA_PKGDIR=/opt/julia \ | ||
JULIA_VERSION="${julia_version}" | ||
|
||
WORKDIR /tmp | ||
|
||
# hadolint ignore=SC2046 | ||
RUN mkdir "/opt/julia-${JULIA_VERSION}" && \ | ||
wget -q https://julialang-s3.julialang.org/bin/linux/x64/$(echo "${JULIA_VERSION}" | cut -d. -f 1,2)"/julia-${JULIA_VERSION}-linux-x86_64.tar.gz" && \ | ||
echo "${julia_checksum} *julia-${JULIA_VERSION}-linux-x86_64.tar.gz" | sha256sum -c - && \ | ||
tar xzf "julia-${JULIA_VERSION}-linux-x86_64.tar.gz" -C "/opt/julia-${JULIA_VERSION}" --strip-components=1 && \ | ||
rm "/tmp/julia-${JULIA_VERSION}-linux-x86_64.tar.gz" | ||
RUN ln -fs /opt/julia-*/bin/julia /usr/local/bin/julia | ||
|
||
# Show Julia where conda libraries are \ | ||
RUN mkdir /etc/julia && \ | ||
echo "push!(Libdl.DL_LOAD_PATH, \"$CONDA_DIR/lib\")" >> /etc/julia/juliarc.jl && \ | ||
# Create JULIA_PKGDIR \ | ||
mkdir "${JULIA_PKGDIR}" && \ | ||
chown "${NB_USER}" "${JULIA_PKGDIR}" && \ | ||
fix-permissions "${JULIA_PKGDIR}" | ||
|
||
USER $NB_UID | ||
|
||
# R packages including IRKernel which gets installed globally. | ||
RUN conda install --quiet --yes \ | ||
'r-base=4.0.3' \ | ||
'r-caret=6.0*' \ | ||
'r-crayon=1.3*' \ | ||
'r-devtools=2.3*' \ | ||
'r-forecast=8.13*' \ | ||
'r-hexbin=1.28*' \ | ||
'r-htmltools=0.5*' \ | ||
'r-htmlwidgets=1.5*' \ | ||
'r-irkernel=1.1*' \ | ||
'r-nycflights13=1.0*' \ | ||
'r-randomforest=4.6*' \ | ||
'r-rcurl=1.98*' \ | ||
'r-rmarkdown=2.6*' \ | ||
'r-rsqlite=2.2*' \ | ||
'r-shiny=1.5*' \ | ||
'r-tidyverse=1.3*' \ | ||
'rpy2=3.3*' && \ | ||
conda clean --all -f -y && \ | ||
fix-permissions "${CONDA_DIR}" && \ | ||
fix-permissions "/home/${NB_USER}" | ||
|
||
# Add Julia packages. Only add HDF5 if this is not a test-only build since | ||
# it takes roughly half the entire build time of all of the images on Travis | ||
# to add this one package and often causes Travis to timeout. | ||
# | ||
# Install IJulia as jovyan and then move the kernelspec out | ||
# to the system share location. Avoids problems with runtime UID change not | ||
# taking effect properly on the .local folder in the jovyan home dir. | ||
RUN julia -e 'import Pkg; Pkg.update()' && \ | ||
(test $TEST_ONLY_BUILD || julia -e 'import Pkg; Pkg.add("HDF5")') && \ | ||
julia -e "using Pkg; pkg\"add IJulia\"; pkg\"precompile\"" && \ | ||
# move kernelspec out of home \ | ||
mv "${HOME}/.local/share/jupyter/kernels/julia"* "${CONDA_DIR}/share/jupyter/kernels/" && \ | ||
chmod -R go+rx "${CONDA_DIR}/share/jupyter" && \ | ||
rm -rf "${HOME}/.local" && \ | ||
fix-permissions "${JULIA_PKGDIR}" "${CONDA_DIR}/share/jupyter" | ||
|
||
WORKDIR $HOME | ||
|
||
############################################################################ | ||
|
@@ -314,7 +415,7 @@ LABEL maintainer="Christoph Schranz <[email protected]>" | |
# Install Tensorflow, check compatibility here: https://www.tensorflow.org/install/gpu | ||
# installation via conda leads to errors in version 4.8.2 | ||
RUN pip install --upgrade pip && \ | ||
pip install --no-cache-dir "tensorflow-gpu>=2.1.*" && \ | ||
pip install --no-cache-dir "tensorflow==2.3.2" && \ | ||
pip install --no-cache-dir keras | ||
|
||
# Install PyTorch with dependencies | ||
|
@@ -361,13 +462,13 @@ RUN jupyter labextension install jupyterlab-drawio | |
RUN jupyter labextension install jupyter-leaflet | ||
RUN jupyter labextension install [email protected] | ||
RUN jupyter labextension install @jupyter-widgets/jupyterlab-manager | ||
RUN pip install --no-cache-dir jupyter-tabnine==1.0.2 && \ | ||
jupyter nbextension install --py jupyter_tabnine && \ | ||
jupyter nbextension enable --py jupyter_tabnine && \ | ||
jupyter serverextension enable --py jupyter_tabnine | ||
RUN pip install --no-cache-dir jupyter-tabnine==1.1.0 --user && \ | ||
jupyter nbextension install --py jupyter_tabnine --user && \ | ||
jupyter nbextension enable --py jupyter_tabnine --user && \ | ||
jupyter serverextension enable --py jupyter_tabnine --user | ||
RUN pip install --no-cache-dir jupyter_contrib_nbextensions \ | ||
jupyter_nbextensions_configurator rise && \ | ||
jupyter nbextension enable codefolding/main | ||
jupyter_nbextensions_configurator rise | ||
# jupyter nbextension enable codefolding/main | ||
RUN jupyter labextension install @ijmbarr/jupyterlab_spellchecker | ||
|
||
RUN fix-permissions /home/$NB_USER | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
#!/usr/bin/env bash | ||
cd $(cd -P -- "$(dirname -- "$0")" && pwd -P) | ||
|
||
export TAGNAME="v1.3_cuda-10.1_ubuntu-18.04" | ||
|
||
|
||
###################### build, run and push full image ########################## | ||
echo | ||
echo | ||
echo "build, run and push full image with tag $TAGNAME." | ||
bash generate-Dockerfile.sh | ||
docker build -t cschranz/gpu-jupyter:$TAGNAME .build/ | ||
|
||
export IMG_ID=$(docker image ls | grep $TAGNAME | grep -v _python-only | grep -v _slim | head -1 | awk '{print $3}') | ||
echo "push image with ID $IMG_ID and Tag $TAGNAME ." | ||
|
||
docker tag $IMG_ID cschranz/gpu-jupyter:$TAGNAME | ||
docker rm -f gpu-jupyter_1 | ||
docker run --gpus all -d -it -p 8848:8888 -v $(pwd)/data:/home/jovyan/work -e GRANT_SUDO=yes -e JUPYTER_ENABLE_LAB=yes --user root --restart always --name gpu-jupyter_1 cschranz/gpu-jupyter:$TAGNAME | ||
|
||
docker push cschranz/gpu-jupyter:$TAGNAME && | ||
docker save cschranz/gpu-jupyter:$TAGNAME | gzip > ../gpu-jupyter_tag-$TAGNAME.tar.gz | ||
|
||
|
||
###################### build and push slim image ########################## | ||
echo | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
ChristophSchranz
Author
Collaborator
|
||
echo | ||
echo "build and push slim image with tag ${TAGNAME}_slim." | ||
bash generate-Dockerfile.sh --slim | ||
docker build -t cschranz/gpu-jupyter:${TAGNAME}_slim .build/ | ||
|
||
export IMG_ID=$(docker image ls | grep ${TAGNAME}_slim | head -1 | awk '{print $3}') | ||
echo "push image with ID $IMG_ID and Tag ${TAGNAME}_slim." | ||
|
||
docker tag $IMG_ID cschranz/gpu-jupyter:${TAGNAME}_slim | ||
docker push cschranz/gpu-jupyter:${TAGNAME}_slim && | ||
docker save cschranz/gpu-jupyter:${TAGNAME}_slim | gzip > ../gpu-jupyter_tag-${TAGNAME}_slim.tar.gz | ||
|
||
|
||
|
||
###################### build and push python-only image ########################## | ||
echo | ||
echo | ||
echo "build and push slim image with tag ${TAGNAME}_slim." | ||
bash generate-Dockerfile.sh --slim | ||
docker build -t cschranz/gpu-jupyter:${TAGNAME}_slim .build/ | ||
|
||
export IMG_ID=$(docker image ls | grep ${TAGNAME}_slim | head -1 | awk '{print $3}') | ||
echo "push image with ID $IMG_ID and Tag ${TAGNAME}_slim." | ||
|
||
docker tag $IMG_ID cschranz/gpu-jupyter:${TAGNAME}_slim | ||
docker push cschranz/gpu-jupyter:${TAGNAME}_slim && | ||
docker save cschranz/gpu-jupyter:${TAGNAME}_slim | gzip > ../gpu-jupyter_tag-${TAGNAME}_slim.tar.gz | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
are these just to create spacing? if so,
echo -e '\n\n ...'
could do it from the line where you print a message.