Skip to content

Commit 9d11bc0

Browse files
chorrellChristopher Horrell
authored and
Christopher Horrell
committed
Add Node.js "core" image
This is an image without npm or yarn installed, suitable for multi-stage builds. Closes #404
1 parent 6173c7f commit 9d11bc0

File tree

8 files changed

+280
-12
lines changed

8 files changed

+280
-12
lines changed

.travis.yml

+20
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,11 @@ jobs:
104104
- NODE_VERSION: "10"
105105
- VARIANT: "stretch"
106106

107+
- stage: Build
108+
env:
109+
- NODE_VERSION: "10"
110+
- VARIANT: "core"
111+
107112
- stage: Build
108113
env:
109114
- NODE_VERSION: "6"
@@ -129,6 +134,11 @@ jobs:
129134
- NODE_VERSION: "6"
130135
- VARIANT: "stretch"
131136

137+
- stage: Build
138+
env:
139+
- NODE_VERSION: "6"
140+
- VARIANT: "core"
141+
132142
- stage: Build
133143
env:
134144
- NODE_VERSION: "8"
@@ -154,6 +164,11 @@ jobs:
154164
- NODE_VERSION: "8"
155165
- VARIANT: "stretch"
156166

167+
- stage: Build
168+
env:
169+
- NODE_VERSION: "8"
170+
- VARIANT: "core"
171+
157172
- stage: Build
158173
env:
159174
- NODE_VERSION: "9"
@@ -179,6 +194,11 @@ jobs:
179194
- NODE_VERSION: "9"
180195
- VARIANT: "stretch"
181196

197+
- stage: Build
198+
env:
199+
- NODE_VERSION: "9"
200+
- VARIANT: "core"
201+
182202
- stage: Build
183203
env:
184204
- NODE_VERSION: "chakracore/10"

10/core/Dockerfile

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
FROM debian:jessie-slim
2+
3+
RUN groupadd --gid 1000 node \
4+
&& useradd --uid 1000 --gid node --shell /bin/bash --create-home node
5+
6+
# gpg keys listed at https://github.com/nodejs/node#release-team
7+
RUN set -ex \
8+
&& for key in \
9+
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
10+
FD3A5288F042B6850C66B31F09FE44734EB7990E \
11+
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
12+
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
13+
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
14+
B9AE9905FFD7803F25714661B63B535A4C206CA9 \
15+
56730D5401028683275BD23C23EFEFE93C4CFFFE \
16+
77984A986EBC2AA786BC0F66B01FBB92821C587A \
17+
; do \
18+
gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
19+
gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
20+
gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
21+
done
22+
23+
ENV NODE_VERSION 10.3.0
24+
25+
RUN buildDeps='ca-certificates curl xz-utils' \
26+
ARCH= && dpkgArch="$(dpkg --print-architecture)" \
27+
&& case "${dpkgArch##*-}" in \
28+
amd64) ARCH='x64';; \
29+
ppc64el) ARCH='ppc64le';; \
30+
s390x) ARCH='s390x';; \
31+
arm64) ARCH='arm64';; \
32+
armhf) ARCH='armv7l';; \
33+
i386) ARCH='x86';; \
34+
*) echo "unsupported architecture"; exit 1 ;; \
35+
esac \
36+
&& set -x \
37+
&& apt-get update && apt-get install -y $buildDeps --no-install-recommends \
38+
&& rm -rf /var/lib/apt/lists/* \
39+
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \
40+
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
41+
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
42+
&& grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
43+
&& tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
44+
&& rm -rf /usr/local/lib/node_modules/ \
45+
&& rm -rf /usr/local/bin/npm \
46+
&& rm -rf /usr/local/bin/npx \
47+
&& rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
48+
&& apt-get purge -y --auto-remove $buildDeps \
49+
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs
50+
51+
CMD [ "node" ]

6/architectures

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
bashbrew-arch variants
2-
arm32v7 jessie,onbuild,slim,stretch
3-
arm64v8 jessie,onbuild,slim,stretch
4-
amd64 jessie,alpine,onbuild,slim,stretch
5-
i386 jessie,onbuild,slim,stretch
6-
ppc64le jessie,onbuild,slim,stretch
7-
s390x jessie,onbuild,slim,stretch
2+
arm32v7 jessie,onbuild,slim,stretch,core
3+
arm64v8 jessie,onbuild,slim,stretch,core
4+
amd64 jessie,alpine,onbuild,slim,stretch,core
5+
i386 jessie,onbuild,slim,stretch,core
6+
ppc64le jessie,onbuild,slim,stretch,core
7+
s390x jessie,onbuild,slim,stretch,core

6/core/Dockerfile

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
FROM debian:jessie-slim
2+
3+
RUN groupadd --gid 1000 node \
4+
&& useradd --uid 1000 --gid node --shell /bin/bash --create-home node
5+
6+
# gpg keys listed at https://github.com/nodejs/node#release-team
7+
RUN set -ex \
8+
&& for key in \
9+
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
10+
FD3A5288F042B6850C66B31F09FE44734EB7990E \
11+
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
12+
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
13+
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
14+
B9AE9905FFD7803F25714661B63B535A4C206CA9 \
15+
56730D5401028683275BD23C23EFEFE93C4CFFFE \
16+
77984A986EBC2AA786BC0F66B01FBB92821C587A \
17+
; do \
18+
gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
19+
gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
20+
gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
21+
done
22+
23+
ENV NODE_VERSION 6.14.2
24+
25+
RUN buildDeps='ca-certificates curl xz-utils' \
26+
ARCH= && dpkgArch="$(dpkg --print-architecture)" \
27+
&& case "${dpkgArch##*-}" in \
28+
amd64) ARCH='x64';; \
29+
ppc64el) ARCH='ppc64le';; \
30+
s390x) ARCH='s390x';; \
31+
arm64) ARCH='arm64';; \
32+
armhf) ARCH='armv7l';; \
33+
i386) ARCH='x86';; \
34+
*) echo "unsupported architecture"; exit 1 ;; \
35+
esac \
36+
&& set -x \
37+
&& apt-get update && apt-get install -y $buildDeps --no-install-recommends \
38+
&& rm -rf /var/lib/apt/lists/* \
39+
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \
40+
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
41+
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
42+
&& grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
43+
&& tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
44+
&& rm -rf /usr/local/lib/node_modules/ \
45+
&& rm -rf /usr/local/bin/npm \
46+
&& rm -rf /usr/local/bin/npx \
47+
&& rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
48+
&& apt-get purge -y --auto-remove $buildDeps \
49+
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs
50+
51+
CMD [ "node" ]

8/core/Dockerfile

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
FROM debian:jessie-slim
2+
3+
RUN groupadd --gid 1000 node \
4+
&& useradd --uid 1000 --gid node --shell /bin/bash --create-home node
5+
6+
# gpg keys listed at https://github.com/nodejs/node#release-team
7+
RUN set -ex \
8+
&& for key in \
9+
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
10+
FD3A5288F042B6850C66B31F09FE44734EB7990E \
11+
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
12+
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
13+
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
14+
B9AE9905FFD7803F25714661B63B535A4C206CA9 \
15+
56730D5401028683275BD23C23EFEFE93C4CFFFE \
16+
77984A986EBC2AA786BC0F66B01FBB92821C587A \
17+
; do \
18+
gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
19+
gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
20+
gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
21+
done
22+
23+
ENV NODE_VERSION 8.11.2
24+
25+
RUN buildDeps='ca-certificates curl xz-utils' \
26+
ARCH= && dpkgArch="$(dpkg --print-architecture)" \
27+
&& case "${dpkgArch##*-}" in \
28+
amd64) ARCH='x64';; \
29+
ppc64el) ARCH='ppc64le';; \
30+
s390x) ARCH='s390x';; \
31+
arm64) ARCH='arm64';; \
32+
armhf) ARCH='armv7l';; \
33+
i386) ARCH='x86';; \
34+
*) echo "unsupported architecture"; exit 1 ;; \
35+
esac \
36+
&& set -x \
37+
&& apt-get update && apt-get install -y $buildDeps --no-install-recommends \
38+
&& rm -rf /var/lib/apt/lists/* \
39+
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \
40+
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
41+
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
42+
&& grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
43+
&& tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
44+
&& rm -rf /usr/local/lib/node_modules/ \
45+
&& rm -rf /usr/local/bin/npm \
46+
&& rm -rf /usr/local/bin/npx \
47+
&& rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
48+
&& apt-get purge -y --auto-remove $buildDeps \
49+
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs
50+
51+
CMD [ "node" ]

9/core/Dockerfile

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
FROM debian:jessie-slim
2+
3+
RUN groupadd --gid 1000 node \
4+
&& useradd --uid 1000 --gid node --shell /bin/bash --create-home node
5+
6+
# gpg keys listed at https://github.com/nodejs/node#release-team
7+
RUN set -ex \
8+
&& for key in \
9+
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
10+
FD3A5288F042B6850C66B31F09FE44734EB7990E \
11+
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
12+
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
13+
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
14+
B9AE9905FFD7803F25714661B63B535A4C206CA9 \
15+
56730D5401028683275BD23C23EFEFE93C4CFFFE \
16+
77984A986EBC2AA786BC0F66B01FBB92821C587A \
17+
; do \
18+
gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
19+
gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
20+
gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
21+
done
22+
23+
ENV NODE_VERSION 9.11.1
24+
25+
RUN buildDeps='ca-certificates curl xz-utils' \
26+
ARCH= && dpkgArch="$(dpkg --print-architecture)" \
27+
&& case "${dpkgArch##*-}" in \
28+
amd64) ARCH='x64';; \
29+
ppc64el) ARCH='ppc64le';; \
30+
s390x) ARCH='s390x';; \
31+
arm64) ARCH='arm64';; \
32+
armhf) ARCH='armv7l';; \
33+
i386) ARCH='x86';; \
34+
*) echo "unsupported architecture"; exit 1 ;; \
35+
esac \
36+
&& set -x \
37+
&& apt-get update && apt-get install -y $buildDeps --no-install-recommends \
38+
&& rm -rf /var/lib/apt/lists/* \
39+
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \
40+
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
41+
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
42+
&& grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
43+
&& tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
44+
&& rm -rf /usr/local/lib/node_modules/ \
45+
&& rm -rf /usr/local/bin/npm \
46+
&& rm -rf /usr/local/bin/npx \
47+
&& rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
48+
&& apt-get purge -y --auto-remove $buildDeps \
49+
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs
50+
51+
CMD [ "node" ]

Dockerfile-core.template

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
FROM debian:jessie-slim
2+
3+
RUN groupadd --gid 1000 node \
4+
&& useradd --uid 1000 --gid node --shell /bin/bash --create-home node
5+
6+
# gpg keys listed at https://github.com/nodejs/node#release-team
7+
RUN set -ex \
8+
&& for key in \
9+
"${NODE_KEYS[@]}"
10+
; do \
11+
gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
12+
gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
13+
gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
14+
done
15+
16+
ENV NODE_VERSION 0.0.0
17+
18+
RUN buildDeps='ca-certificates curl xz-utils' \
19+
ARCH= && dpkgArch="$(dpkg --print-architecture)" \
20+
&& case "${dpkgArch##*-}" in \
21+
amd64) ARCH='x64';; \
22+
ppc64el) ARCH='ppc64le';; \
23+
s390x) ARCH='s390x';; \
24+
arm64) ARCH='arm64';; \
25+
armhf) ARCH='armv7l';; \
26+
i386) ARCH='x86';; \
27+
*) echo "unsupported architecture"; exit 1 ;; \
28+
esac \
29+
&& set -x \
30+
&& apt-get update && apt-get install -y $buildDeps --no-install-recommends \
31+
&& rm -rf /var/lib/apt/lists/* \
32+
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \
33+
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
34+
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
35+
&& grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
36+
&& tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
37+
&& rm -rf /usr/local/lib/node_modules/ \
38+
&& rm -rf /usr/local/bin/npm \
39+
&& rm -rf /usr/local/bin/npx \
40+
&& rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
41+
&& apt-get purge -y --auto-remove $buildDeps \
42+
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs
43+
44+
CMD [ "node" ]

architectures

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
bashbrew-arch variants
22
arm32v6 alpine
3-
arm32v7 jessie,onbuild,slim,stretch
4-
arm64v8 jessie,alpine,onbuild,slim,stretch
5-
amd64 jessie,alpine,onbuild,slim,stretch
6-
i386 jessie,alpine,onbuild,slim,stretch
7-
ppc64le jessie,alpine,onbuild,slim,stretch
8-
s390x jessie,alpine,onbuild,slim,stretch
3+
arm32v7 jessie,onbuild,slim,stretch,core
4+
arm64v8 jessie,alpine,onbuild,slim,stretch,core
5+
amd64 jessie,alpine,onbuild,slim,stretch,core
6+
i386 jessie,alpine,onbuild,slim,stretch,core
7+
ppc64le jessie,alpine,onbuild,slim,stretch,core
8+
s390x jessie,alpine,onbuild,slim,stretch,core

0 commit comments

Comments
 (0)