Docker: use a entrypoint script (#1227) In favor of `/etc/bash.bashrc`, which is only read for interactive shells.
diff --git a/.dockerignore b/.dockerignore index 2e47671..cf12f58 100644 --- a/.dockerignore +++ b/.dockerignore
@@ -1,7 +1,8 @@ # Ignore everything * -# Allow to run the test script inside the Docker container +# Allow the entrypoint/test script inside the Docker container +!/docker/entrypoint.sh !/docker/test_dockerimage.sh # Allow license file
diff --git a/docker/Dockerfile b/docker/Dockerfile index aeaf701..4cb32f1 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile
@@ -58,11 +58,12 @@ COPY --from=stage_build /emsdk /emsdk -# Fallback in case Emscripten isn't activated. -# This will let use tools offered by this image inside other Docker images -# (sub-stages) or with custom / no entrypoint +# These fallback environment variables are intended for situations where the +# entrypoint is not utilized (as in a derived image) or overridden (e.g. when +# using `--entrypoint /bin/bash` in CLI). +# This corresponds to the env variables set during: `source ./emsdk_env.sh` ENV EMSDK=/emsdk \ - PATH="/emsdk:/emsdk/upstream/emscripten:/emsdk/upstream/bin:/emsdk/node/16.20.0_64bit/bin:${PATH}" + PATH="/emsdk:/emsdk/upstream/emscripten:/emsdk/node/16.20.0_64bit/bin:${PATH}" # ------------------------------------------------------------------------------ # Create a 'standard` 1000:1000 user @@ -75,8 +76,6 @@ RUN echo "## Create emscripten user (1000:1000)" \ && groupadd --gid 1000 emscripten \ && useradd --uid 1000 --gid emscripten --shell /bin/bash --create-home emscripten \ - && echo "umask 0000" >> /etc/bash.bashrc \ - && echo ". /emsdk/emsdk_env.sh" >> /etc/bash.bashrc \ && echo "## Done" # ------------------------------------------------------------------------------ @@ -120,6 +119,8 @@ # Use commonly used /src as working directory WORKDIR /src +ENTRYPOINT ["/emsdk/docker/entrypoint.sh"] + LABEL maintainer="kontakt@trzeci.eu" \ org.label-schema.name="emscripten" \ org.label-schema.description="The official container with Emscripten SDK" \
diff --git a/docker/Makefile b/docker/Makefile index 0c961ca..8e84b2e 100644 --- a/docker/Makefile +++ b/docker/Makefile
@@ -17,8 +17,8 @@ test: test_dockerimage.sh .TEST # test as non-root - docker run --rm -u `id -u`:`id -g` -w /emsdk/docker --net=host ${image_name}:${version} \ - bash $< + # test fallback env variables by overriding the entrypoint + docker run --rm -u `id -u`:`id -g` -w /emsdk/docker --net=host --entrypoint /bin/bash ${image_name}:${version} $< push: .TEST docker push ${image_name}:${version}
diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100755 index 0000000..ceadfc4 --- /dev/null +++ b/docker/entrypoint.sh
@@ -0,0 +1,7 @@ +#!/bin/bash +set -e + +# Set-up PATH and other environment variables +EMSDK_QUIET=1 source /emsdk/emsdk_env.sh + +exec "$@"
diff --git a/docker/test_dockerimage.sh b/docker/test_dockerimage.sh index 4f44806..0964820 100755 --- a/docker/test_dockerimage.sh +++ b/docker/test_dockerimage.sh
@@ -5,7 +5,6 @@ sudo -u nobody `which emcc` --version fi -which llvm-ar which emsdk node --version npm --version