1+ FROM bandsintown/alpine:3.15.0
2+
3+ ENV NPM_CONFIG_LOGLEVEL info
4+ ENV NODE_VERSION 14.18.3
5+
6+ RUN addgroup -g 1000 node \
7+ && adduser -u 1000 -G node -s /bin/sh -D node \
8+ && apk add --no-cache \
9+ libstdc++ \
10+ && apk add --no-cache --virtual .build-deps \
11+ curl \
12+ && ARCH= && alpineArch="$(apk --print-arch)" \
13+ && case "${alpineArch##*-}" in \
14+ x86_64) \
15+ ARCH='x64' \
16+ CHECKSUM="5e148aaf5f728f38ded2daa20b0844e3afd422cf9dd6072958e476cf7437c5f3" \
17+ ;; \
18+ *) ;; \
19+ esac \
20+ && if [ -n "${CHECKSUM}" ]; then \
21+ set -eu; \
22+ curl -fsSLO --compressed "https://unofficial-builds.nodejs.org/download/release/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" ; \
23+ echo "$CHECKSUM node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" | sha256sum -c - \
24+ && tar -xJf "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
25+ && ln -s /usr/local/bin/node /usr/local/bin/nodejs; \
26+ else \
27+ echo "Building from source" \
28+ # backup build
29+ && apk add --no-cache --virtual .build-deps-full \
30+ binutils-gold \
31+ g++ \
32+ gcc \
33+ gnupg \
34+ libgcc \
35+ linux-headers \
36+ make \
37+ python3 \
38+ # gpg keys listed at https://github.com/nodejs/node#release-keys
39+ && for key in \
40+ 4ED778F539E3634C779C87C6D7062848A1AB005C \
41+ 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
42+ 74F12602B6F1C4E913FAA37AD3A89613643B6201 \
43+ 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
44+ 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \
45+ C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
46+ C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C \
47+ DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
48+ A48C2BEE680E841632CD4E44F07496B3EB3C1762 \
49+ 108F52B48DB57BB0CC439B2997B01419BD92F80A \
50+ B9E2F5981AA6E0CD28160D9FF13993A75599653C \
51+ ; do \
52+ gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || \
53+ gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" ; \
54+ done \
55+ && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" \
56+ && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
57+ && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
58+ && grep " node-v$NODE_VERSION.tar.xz\$ " SHASUMS256.txt | sha256sum -c - \
59+ && tar -xf "node-v$NODE_VERSION.tar.xz" \
60+ && cd "node-v$NODE_VERSION" \
61+ && ./configure \
62+ && make -j$(getconf _NPROCESSORS_ONLN) V= \
63+ && make install \
64+ && apk del .build-deps-full \
65+ && cd .. \
66+ && rm -Rf "node-v$NODE_VERSION" \
67+ && rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt; \
68+ fi \
69+ && rm -f "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" \
70+ && apk del .build-deps \
71+ # smoke tests
72+ && node --version \
73+ && npm --version
74+
75+ ENV YARN_VERSION 1.22.15
76+
77+ RUN apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \
78+ && for key in \
79+ 6A010C5166006599AA17F08146C2130DFD2497F5 \
80+ ; do \
81+ gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || \
82+ gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" ; \
83+ done \
84+ && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \
85+ && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \
86+ && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
87+ && mkdir -p /opt \
88+ && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \
89+ && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
90+ && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \
91+ && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
92+ && apk del .build-deps-yarn \
93+ # smoke test
94+ && yarn --version
95+
96+ CMD [ "node" ]
0 commit comments