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