@@ -4,34 +4,41 @@ ENV NPM_CONFIG_LOGLEVEL=info
44ENV NODE_VERSION=22.18.0
55
66# gpg keys listed at https://github.com/nodejs/node
7- RUN set -ex \
8- && apt-get update \
9- && apt-get install -y ca-certificates curl gnupg dirmngr xz-utils --no-install-recommends \
10- && rm -rf /var/lib/apt/lists/* \
11- # use pre-existing gpg directory, see https://github.com/nodejs/docker-node/pull/1895#issuecomment-1550389150
12- && export GNUPGHOME="$(mktemp -d)" \
13- && for key in \
14- 5BE8A3F6C8A5C01D106C0AD820B1A390B168D356 \
15- DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 \
16- CC68F5A3106FF448322E48ED27F5E38D5B0A215F \
17- 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \
18- 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 \
19- C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C \
20- 108F52B48DB57BB0CC439B2997B01419BD92F80A \
21- A363A499291CBBC940DD62E41F10027AF002F8B0 \
22- ; do \
23- { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key" ; } || \
24- { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key" ; } ; \
25- done \
26- && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \
27- && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
28- && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
29- && gpgconf --kill all \
30- && rm -rf "$GNUPGHOME" \
31- && grep " node-v$NODE_VERSION-linux-x64.tar.xz\$ " SHASUMS256.txt | sha256sum -c - \
32- && tar -xJf "node-v$NODE_VERSION-linux-x64.tar.xz" -C /usr/local --strip-components=1 \
33- && rm "node-v$NODE_VERSION-linux-x64.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
34- && node --version \
35- && npm --version
7+ RUN ARCH= OPENSSL_ARCH= && dpkgArch="$(dpkg --print-architecture)" \
8+ && case "${dpkgArch##*-}" in \
9+ amd64) ARCH='x64' OPENSSL_ARCH='linux-x86_64' ;; \
10+ arm64) ARCH='arm64' OPENSSL_ARCH='linux-aarch64' ;; \
11+ *) echo "unsupported architecture" ; exit 1 ;; \
12+ esac \
13+ && set -ex \
14+ # libatomic1 for arm build
15+ && apt-get update \
16+ && apt-get install -y ca-certificates curl dirmngr gnupg libatomic1 xz-utils --no-install-recommends \
17+ && rm -rf /var/lib/apt/lists/* \
18+ # use pre-existing gpg directory, see https://github.com/nodejs/docker-node/pull/1895#issuecomment-1550389150
19+ && export GNUPGHOME="$(mktemp -d)" \
20+ && for key in \
21+ 5BE8A3F6C8A5C01D106C0AD820B1A390B168D356 \
22+ DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 \
23+ CC68F5A3106FF448322E48ED27F5E38D5B0A215F \
24+ 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \
25+ 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 \
26+ C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C \
27+ 108F52B48DB57BB0CC439B2997B01419BD92F80A \
28+ A363A499291CBBC940DD62E41F10027AF002F8B0 \
29+ ; do \
30+ { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key" ; } || \
31+ { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key" ; } ; \
32+ done \
33+ && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \
34+ && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
35+ && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
36+ && gpgconf --kill all \
37+ && rm -rf "$GNUPGHOME" \
38+ && grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$ " SHASUMS256.txt | sha256sum -c - \
39+ && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 \
40+ && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
41+ && node --version \
42+ && npm --version
3643
3744CMD [ "node" ]
0 commit comments