Skip to content

Commit e28e476

Browse files
authored
Docker: use a entrypoint script (#1227)
In favor of `/etc/bash.bashrc`, which is only read for interactive shells.
1 parent 3bde060 commit e28e476

File tree

5 files changed

+18
-10
lines changed

5 files changed

+18
-10
lines changed

.dockerignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# Ignore everything
22
*
33

4-
# Allow to run the test script inside the Docker container
4+
# Allow the entrypoint/test script inside the Docker container
5+
!/docker/entrypoint.sh
56
!/docker/test_dockerimage.sh
67

78
# Allow license file

docker/Dockerfile

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,12 @@ FROM ubuntu:jammy AS stage_deploy
5858

5959
COPY --from=stage_build /emsdk /emsdk
6060

61-
# Fallback in case Emscripten isn't activated.
62-
# This will let use tools offered by this image inside other Docker images
63-
# (sub-stages) or with custom / no entrypoint
61+
# These fallback environment variables are intended for situations where the
62+
# entrypoint is not utilized (as in a derived image) or overridden (e.g. when
63+
# using `--entrypoint /bin/bash` in CLI).
64+
# This corresponds to the env variables set during: `source ./emsdk_env.sh`
6465
ENV EMSDK=/emsdk \
65-
PATH="/emsdk:/emsdk/upstream/emscripten:/emsdk/upstream/bin:/emsdk/node/16.20.0_64bit/bin:${PATH}"
66+
PATH="/emsdk:/emsdk/upstream/emscripten:/emsdk/node/16.20.0_64bit/bin:${PATH}"
6667

6768
# ------------------------------------------------------------------------------
6869
# Create a 'standard` 1000:1000 user
@@ -75,8 +76,6 @@ ENV EMSDK=/emsdk \
7576
RUN echo "## Create emscripten user (1000:1000)" \
7677
&& groupadd --gid 1000 emscripten \
7778
&& useradd --uid 1000 --gid emscripten --shell /bin/bash --create-home emscripten \
78-
&& echo "umask 0000" >> /etc/bash.bashrc \
79-
&& echo ". /emsdk/emsdk_env.sh" >> /etc/bash.bashrc \
8079
&& echo "## Done"
8180

8281
# ------------------------------------------------------------------------------
@@ -120,6 +119,8 @@ RUN echo "## Update and install packages" \
120119
# Use commonly used /src as working directory
121120
WORKDIR /src
122121

122+
ENTRYPOINT ["/emsdk/docker/entrypoint.sh"]
123+
123124
LABEL maintainer="[email protected]" \
124125
org.label-schema.name="emscripten" \
125126
org.label-schema.description="The official container with Emscripten SDK" \

docker/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ build: Dockerfile .TEST
1717

1818
test: test_dockerimage.sh .TEST
1919
# test as non-root
20-
docker run --rm -u `id -u`:`id -g` -w /emsdk/docker --net=host ${image_name}:${version} \
21-
bash $<
20+
# test fallback env variables by overriding the entrypoint
21+
docker run --rm -u `id -u`:`id -g` -w /emsdk/docker --net=host --entrypoint /bin/bash ${image_name}:${version} $<
2222

2323
push: .TEST
2424
docker push ${image_name}:${version}

docker/entrypoint.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# Set-up PATH and other environment variables
5+
EMSDK_QUIET=1 source /emsdk/emsdk_env.sh
6+
7+
exec "$@"

docker/test_dockerimage.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ if [ $EUID -eq 0 ]; then
55
sudo -u nobody `which emcc` --version
66
fi
77

8-
which llvm-ar
98
which emsdk
109
node --version
1110
npm --version

0 commit comments

Comments
 (0)