@@ -5,39 +5,23 @@ ENV NODE_VERSION=22.23.3
55RUN addgroup -g 1000 node \
66 && adduser -u 1000 -G node -s /bin/sh -D node \
77 && apk add --no-cache \
8+ libatomic \
89 libstdc++ \
910 && apk add --no-cache --virtual .build-deps \
11+ gnupg \
1012 curl \
1113 && ARCH= OPENSSL_ARCH='linux*' && alpineArch="$(apk --print-arch)" \
1214 && case "${alpineArch##*-}" in \
13- x86_64) ARCH='x64' CHECKSUM= "9b177f0c140a82a3d247e8f54586a65dbdf91e5e3a01f04708dabfdc9e0e01c4" OPENSSL_ARCH=linux-x86_64;; \
15+ x86_64) ARCH='x64' OPENSSL_ARCH=linux-x86_64;; \
1416 aarch64) OPENSSL_ARCH=linux-aarch64;; \
1517 arm*) OPENSSL_ARCH=linux-armv4;; \
1618 s390x) OPENSSL_ARCH=linux-s390x;; \
1719 *) echo "unsupported architecture" ; exit 1 ;; \
1820 esac \
19- && if [ -n "${CHECKSUM}" ]; then \
20- set -eu; \
21- curl -fsSLO --compressed "https://unofficial-builds.nodejs.org/download/release/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" ; \
22- echo "$CHECKSUM node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" | sha256sum -c - \
23- && tar -xJf "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
24- && ln -s /usr/local/bin/node /usr/local/bin/nodejs; \
25- else \
26- echo "Building from source" \
27- # backup build
28- && apk add --no-cache --virtual .build-deps-full \
29- binutils-gold \
30- g++ \
31- gcc \
32- gnupg \
33- libgcc \
34- linux-headers \
35- make \
36- python3 \
37- py-setuptools \
3821 # use pre-existing gpg directory, see https://github.com/nodejs/docker-node/pull/1895#issuecomment-1550389150
3922 && export GNUPGHOME="$(mktemp -d)" \
4023 # gpg keys listed at https://github.com/nodejs/node#release-keys
24+ && set -ex \
4125 && for key in \
4226 5BE8A3F6C8A5C01D106C0AD820B1A390B168D356 \
4327 DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 \
@@ -48,9 +32,30 @@ RUN addgroup -g 1000 node \
4832 655F3B5C1FB3FA8D1A0CA6BDE4A7D232B936D2FD \
4933 A363A499291CBBC940DD62E41F10027AF002F8B0 \
5034 ; do \
51- { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key" ; } || \
52- { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key" ; } ; \
35+ { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key" ; } || \
36+ { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key" ; } ; \
5337 done \
38+ && if [ "$ARCH" = "x64" ]; then \
39+ curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH-musl.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+ && gpgconf --kill all \
43+ && rm -rf "$GNUPGHOME" \
44+ && grep " node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz\$ " SHASUMS256.txt | sha256sum -c - \
45+ && tar -xJf "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
46+ && rm "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
47+ && ln -s /usr/local/bin/node /usr/local/bin/nodejs; \
48+ else \
49+ echo "Building from source" \
50+ && apk add --no-cache --virtual .build-deps-full \
51+ binutils-gold \
52+ g++ \
53+ gcc \
54+ libgcc \
55+ linux-headers \
56+ make \
57+ python3 \
58+ py-setuptools \
5459 && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" \
5560 && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
5661 && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
@@ -67,7 +72,6 @@ RUN addgroup -g 1000 node \
6772 && rm -Rf "node-v$NODE_VERSION" \
6873 && rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt; \
6974 fi \
70- && rm -f "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" \
7175 # Remove unused OpenSSL headers to save ~34MB. See this NodeJS issue: https://github.com/nodejs/node/issues/46451
7276 && find /usr/local/include/node/openssl/archs -mindepth 1 -maxdepth 1 ! -name "$OPENSSL_ARCH" -exec rm -rf {} \; \
7377 && apk del .build-deps \
0 commit comments