From 7b48e43b7472a5a9ae7e030cc24e572f4763c1bf Mon Sep 17 00:00:00 2001 From: Romain Date: Fri, 29 May 2020 19:33:24 +0200 Subject: [PATCH] Fix hadolint deviations --- Makefile | 2 +- all-spark-notebook/Dockerfile | 19 +++++++++------- datascience-notebook/Dockerfile | 40 ++++++++++++++++++++------------- minimal-notebook/Dockerfile | 2 ++ pyspark-notebook/Dockerfile | 26 ++++++++++++++------- r-notebook/Dockerfile | 4 +++- scipy-notebook/Dockerfile | 25 +++++++++++---------- tensorflow-notebook/Dockerfile | 5 +++-- 8 files changed, 76 insertions(+), 47 deletions(-) diff --git a/Makefile b/Makefile index 1cee3d81..c730a368 100644 --- a/Makefile +++ b/Makefile @@ -79,7 +79,7 @@ dev-env: ## install libraries required to build docs and run tests lint/%: ARGS?= lint/%: ## lint the dockerfile(s) for a stack @echo "Linting Dockerfiles in $(notdir $@)..." - git ls-files --exclude='Dockerfile*' --ignored $(notdir $@) | grep -v ppc64 | xargs -L 1 $(HADOLINT) $(ARGS) + @git ls-files --exclude='Dockerfile*' --ignored $(notdir $@) | grep -v ppc64 | xargs -L 1 $(HADOLINT) $(ARGS) @echo "Linting done!" lint-all: $(foreach I,$(ALL_IMAGES),lint/$(I) ) ## lint all stacks diff --git a/all-spark-notebook/Dockerfile b/all-spark-notebook/Dockerfile index 29c0f0ba..d01a0d4e 100644 --- a/all-spark-notebook/Dockerfile +++ b/all-spark-notebook/Dockerfile @@ -1,6 +1,7 @@ # Copyright (c) Jupyter Development Team. # Distributed under the terms of the Modified BSD License. ARG BASE_CONTAINER=jupyter/pyspark-notebook +# hadolint ignore=DL3006 FROM $BASE_CONTAINER LABEL maintainer="Jupyter Project " @@ -12,6 +13,7 @@ ENV R_LIBS_USER $SPARK_HOME/R/lib RUN fix-permissions $R_LIBS_USER # R pre-requisites +# hadolint ignore=DL3008 RUN apt-get update && \ apt-get install -y --no-install-recommends \ fonts-dejavu \ @@ -30,22 +32,23 @@ RUN conda install --quiet --yes \ 'r-sparklyr=1.2*' \ && \ conda clean --all -f -y && \ - fix-permissions $CONDA_DIR && \ - fix-permissions /home/$NB_USER + fix-permissions "${CONDA_DIR}" && \ + fix-permissions "/home/${NB_USER}" # Apache Toree kernel +# hadolint ignore=DL3013 RUN pip install --no-cache-dir \ https://dist.apache.org/repos/dist/release/incubator/toree/0.3.0-incubating/toree-pip/toree-0.3.0.tar.gz \ && \ jupyter toree install --sys-prefix && \ - rm -rf /home/$NB_USER/.local && \ - fix-permissions $CONDA_DIR && \ - fix-permissions /home/$NB_USER + rm -rf "/home/${NB_USER}/.local" && \ + fix-permissions "${CONDA_DIR}" && \ + fix-permissions "/home/${NB_USER}" # Spylon-kernel RUN conda install --quiet --yes 'spylon-kernel=0.4*' && \ conda clean --all -f -y && \ python -m spylon_kernel install --sys-prefix && \ - rm -rf /home/$NB_USER/.local && \ - fix-permissions $CONDA_DIR && \ - fix-permissions /home/$NB_USER + rm -rf "/home/${NB_USER}/.local" && \ + fix-permissions "${CONDA_DIR}" && \ + fix-permissions "/home/${NB_USER}" diff --git a/datascience-notebook/Dockerfile b/datascience-notebook/Dockerfile index c7989245..0bd7aa82 100644 --- a/datascience-notebook/Dockerfile +++ b/datascience-notebook/Dockerfile @@ -1,6 +1,7 @@ # Copyright (c) Jupyter Development Team. # Distributed under the terms of the Modified BSD License. ARG BASE_CONTAINER=jupyter/scipy-notebook +# hadolint ignore=DL3006 FROM $BASE_CONTAINER LABEL maintainer="Jupyter Project " @@ -9,9 +10,13 @@ LABEL maintainer="Jupyter Project " # be skipped to shorten build time. ARG TEST_ONLY_BUILD +# Fix DL4006 +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + USER root # R pre-requisites +# hadolint ignore=DL3008 RUN apt-get update && \ apt-get install -y --no-install-recommends \ fonts-dejavu \ @@ -25,21 +30,24 @@ ENV JULIA_DEPOT_PATH=/opt/julia ENV JULIA_PKGDIR=/opt/julia ENV JULIA_VERSION=1.4.1 -RUN mkdir /opt/julia-${JULIA_VERSION} && \ - cd /tmp && \ - 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 && \ +WORKDIR /tmp + +# TODO +# 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 "fd6d8cadaed678174c3caefb92207a3b0e8da9f926af6703fb4d1e4e4f50610a *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 + 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 + mkdir "${JULIA_PKGDIR}" && \ + chown "${NB_USER}" "${JULIA_PKGDIR}" && \ + fix-permissions "${JULIA_PKGDIR}" USER $NB_UID @@ -66,8 +74,8 @@ RUN conda install --quiet --yes \ 'rpy2=3.1*' \ && \ conda clean --all -f -y && \ - fix-permissions $CONDA_DIR && \ - fix-permissions /home/$NB_USER + 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 @@ -77,10 +85,12 @@ RUN conda install --quiet --yes \ # 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")') && \ + (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 + 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 \ No newline at end of file diff --git a/minimal-notebook/Dockerfile b/minimal-notebook/Dockerfile index fe845c43..3cf6c3df 100644 --- a/minimal-notebook/Dockerfile +++ b/minimal-notebook/Dockerfile @@ -1,6 +1,7 @@ # Copyright (c) Jupyter Development Team. # Distributed under the terms of the Modified BSD License. ARG BASE_CONTAINER=jupyter/base-notebook +# hadolint ignore=DL3006 FROM $BASE_CONTAINER LABEL maintainer="Jupyter Project " @@ -8,6 +9,7 @@ LABEL maintainer="Jupyter Project " USER root # Install all OS dependencies for fully functional notebook server +# hadolint ignore=DL3008 RUN apt-get update && apt-get install -yq --no-install-recommends \ build-essential \ emacs-nox \ diff --git a/pyspark-notebook/Dockerfile b/pyspark-notebook/Dockerfile index 8e3d5a70..308d055b 100644 --- a/pyspark-notebook/Dockerfile +++ b/pyspark-notebook/Dockerfile @@ -1,28 +1,36 @@ # Copyright (c) Jupyter Development Team. # Distributed under the terms of the Modified BSD License. ARG BASE_CONTAINER=jupyter/scipy-notebook +# hadolint ignore=DL3006 FROM $BASE_CONTAINER LABEL maintainer="Jupyter Project " +# Fix DL4006 +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + USER root # Spark dependencies ENV APACHE_SPARK_VERSION=2.4.5 \ HADOOP_VERSION=2.7 - +# hadolint ignore=DL3008 RUN apt-get -y update && \ apt-get install --no-install-recommends -y openjdk-8-jre-headless ca-certificates-java && \ rm -rf /var/lib/apt/lists/* # Using the preferred mirror to download Spark -RUN cd /tmp && \ - wget -q $(wget -qO- https://www.apache.org/dyn/closer.lua/spark/spark-${APACHE_SPARK_VERSION}/spark-${APACHE_SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}.tgz\?as_json | \ +WORKDIR /tmp +# TODO +# hadolint ignore=SC2046 +RUN wget -q $(wget -qO- "https://www.apache.org/dyn/closer.lua/spark/spark-${APACHE_SPARK_VERSION}/spark-${APACHE_SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}.tgz\?as_json" | \ python -c "import sys, json; content=json.load(sys.stdin); print(content['preferred']+content['path_info'])") && \ echo "2426a20c548bdfc07df288cd1d18d1da6b3189d0b78dee76fa034c52a4e02895f0ad460720c526f163ba63a17efae4764c46a1cd8f9b04c60f9937a554db85d2 *spark-${APACHE_SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}.tgz" | sha512sum -c - && \ - tar xzf spark-${APACHE_SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}.tgz -C /usr/local --owner root --group root --no-same-owner && \ - rm spark-${APACHE_SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}.tgz -RUN cd /usr/local && ln -s spark-${APACHE_SPARK_VERSION}-bin-hadoop${HADOOP_VERSION} spark + tar xzf "spark-${APACHE_SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}.tgz" -C /usr/local --owner root --group root --no-same-owner && \ + rm "spark-${APACHE_SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}.tgz" + +WORKDIR /usr/local +RUN ln -s "spark-${APACHE_SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}" spark # Configure Spark ENV SPARK_HOME=/usr/local/spark @@ -35,5 +43,7 @@ USER $NB_UID # Install pyarrow RUN conda install --quiet -y 'pyarrow' && \ conda clean --all -f -y && \ - fix-permissions $CONDA_DIR && \ - fix-permissions /home/$NB_USER + fix-permissions "${CONDA_DIR}" && \ + fix-permissions "/home/${NB_USER}" + +WORKDIR $HOME \ No newline at end of file diff --git a/r-notebook/Dockerfile b/r-notebook/Dockerfile index 641b0ed5..f2b54956 100644 --- a/r-notebook/Dockerfile +++ b/r-notebook/Dockerfile @@ -1,6 +1,7 @@ # Copyright (c) Jupyter Development Team. # Distributed under the terms of the Modified BSD License. ARG BASE_CONTAINER=jupyter/minimal-notebook +# hadolint ignore=DL3006 FROM $BASE_CONTAINER LABEL maintainer="Jupyter Project " @@ -8,6 +9,7 @@ LABEL maintainer="Jupyter Project " USER root # R pre-requisites +# hadolint ignore=DL3008 RUN apt-get update && \ apt-get install -y --no-install-recommends \ fonts-dejavu \ @@ -47,7 +49,7 @@ RUN conda install --quiet --yes \ 'unixodbc=2.3.*' \ && \ conda clean --all -f -y && \ - fix-permissions $CONDA_DIR + fix-permissions "${CONDA_DIR}" # Install e1071 R package (dependency of the caret R package) RUN conda install --quiet --yes r-e1071 diff --git a/scipy-notebook/Dockerfile b/scipy-notebook/Dockerfile index aa631f49..f49fef60 100644 --- a/scipy-notebook/Dockerfile +++ b/scipy-notebook/Dockerfile @@ -1,6 +1,7 @@ # Copyright (c) Jupyter Development Team. # Distributed under the terms of the Modified BSD License. ARG BASE_CONTAINER=jupyter/minimal-notebook +# hadolint ignore=DL3006 FROM $BASE_CONTAINER LABEL maintainer="Jupyter Project " @@ -8,6 +9,7 @@ LABEL maintainer="Jupyter Project " USER root # ffmpeg for matplotlib anim & dvipng for latex labels +# hadolint ignore=DL3008 RUN apt-get update && \ apt-get install -y --no-install-recommends ffmpeg dvipng && \ rm -rf /var/lib/apt/lists/* @@ -59,24 +61,23 @@ RUN conda install --quiet --yes \ jupyter lab build -y && \ jupyter lab clean -y && \ npm cache clean --force && \ - rm -rf /home/$NB_USER/.cache/yarn && \ - rm -rf /home/$NB_USER/.node-gyp && \ - fix-permissions $CONDA_DIR && \ - fix-permissions /home/$NB_USER + rm -rf "/home/${NB_USER}/.cache/yarn" && \ + rm -rf "/home/${NB_USER}/.node-gyp" && \ + fix-permissions "${CONDA_DIR}" && \ + fix-permissions "/home/${NB_USER}" # Install facets which does not have a pip or conda package at the moment -RUN cd /tmp && \ - git clone https://github.com/PAIR-code/facets.git && \ - cd facets && \ - jupyter nbextension install facets-dist/ --sys-prefix && \ - cd && \ +WORKDIR /tmp +RUN git clone https://github.com/PAIR-code/facets.git && \ + jupyter nbextension install facets/facets-dist/ --sys-prefix && \ rm -rf /tmp/facets && \ - fix-permissions $CONDA_DIR && \ - fix-permissions /home/$NB_USER + fix-permissions "${CONDA_DIR}" && \ + fix-permissions "/home/${NB_USER}" # Import matplotlib the first time to build the font cache. ENV XDG_CACHE_HOME /home/$NB_USER/.cache/ RUN MPLBACKEND=Agg python -c "import matplotlib.pyplot" && \ - fix-permissions /home/$NB_USER + fix-permissions "/home/${NB_USER}" USER $NB_UID +WORKDIR $HOME \ No newline at end of file diff --git a/tensorflow-notebook/Dockerfile b/tensorflow-notebook/Dockerfile index 880905fe..0d2a2fa0 100644 --- a/tensorflow-notebook/Dockerfile +++ b/tensorflow-notebook/Dockerfile @@ -1,6 +1,7 @@ # Copyright (c) Jupyter Development Team. # Distributed under the terms of the Modified BSD License. ARG BASE_CONTAINER=jupyter/scipy-notebook +# hadolint ignore=DL3006 FROM $BASE_CONTAINER LABEL maintainer="Jupyter Project " @@ -8,5 +9,5 @@ LABEL maintainer="Jupyter Project " # Install Tensorflow RUN pip install --quiet --no-cache-dir \ 'tensorflow==2.2.0' && \ - fix-permissions $CONDA_DIR && \ - fix-permissions /home/$NB_USER + fix-permissions "${CONDA_DIR}" && \ + fix-permissions "/home/${NB_USER}"