Skip to content

Commit c3a2607

Browse files
Implemented multi-stage build for alpine
1 parent d0e1226 commit c3a2607

File tree

7 files changed

+206
-166
lines changed

7 files changed

+206
-166
lines changed

10/alpine/Dockerfile

Lines changed: 36 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1-
FROM alpine:3.7
1+
FROM alpine:3.7 as builder
22

33
ENV NODE_VERSION 10.0.0
44

5-
RUN addgroup -g 1000 node \
6-
&& adduser -u 1000 -G node -s /bin/sh -D node \
7-
&& apk add --no-cache \
5+
COPY .ccache /root/.ccache
6+
7+
RUN apk add --no-cache \
88
libstdc++ \
9-
&& apk add --no-cache --virtual .build-deps \
9+
&& apk add --no-cache \
1010
binutils-gold \
11+
ccache \
1112
curl \
1213
g++ \
1314
gcc \
@@ -37,32 +38,40 @@ RUN addgroup -g 1000 node \
3738
&& grep " node-v$NODE_VERSION.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
3839
&& tar -xf "node-v$NODE_VERSION.tar.xz" \
3940
&& cd "node-v$NODE_VERSION" \
41+
&& ln -s /usr/bin/ccache /usr/local/bin/gcc \
42+
&& ln -s /usr/bin/ccache /usr/local/bin/g++ \
4043
&& ./configure \
4144
&& make -j$(getconf _NPROCESSORS_ONLN) \
42-
&& make install \
43-
&& apk del .build-deps \
44-
&& cd .. \
45-
&& rm -Rf "node-v$NODE_VERSION" \
46-
&& rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt
45+
&& make install
4746

4847
ENV YARN_VERSION 1.6.0
4948

50-
RUN apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \
51-
&& for key in \
52-
6A010C5166006599AA17F08146C2130DFD2497F5 \
53-
; do \
54-
gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
55-
gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
56-
gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
57-
done \
58-
&& curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \
59-
&& curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \
60-
&& gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
61-
&& mkdir -p /opt \
62-
&& tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \
63-
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
64-
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \
65-
&& rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
66-
&& apk del .build-deps-yarn
49+
RUN for key in \
50+
6A010C5166006599AA17F08146C2130DFD2497F5 \
51+
; do \
52+
gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
53+
gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
54+
gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
55+
done \
56+
&& curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \
57+
&& curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \
58+
&& gpg --batch --verify "yarn-v$YARN_VERSION.tar.gz.asc" "yarn-v$YARN_VERSION.tar.gz" \
59+
&& tar -xzf "yarn-v$YARN_VERSION.tar.gz"
60+
61+
FROM alpine:3.7
62+
63+
ENV NODE_VERSION 10.0.0
64+
ENV YARN_VERSION 1.6.0
65+
66+
RUN addgroup -g 1000 node \
67+
&& adduser -u 1000 -G node -s /bin/sh -D node \
68+
&& apk add --no-cache \
69+
libstdc++
70+
71+
COPY --from=builder /usr/local /usr/local
72+
COPY --from=builder "yarn-v$YARN_VERSION" "/opt/yarn-v$YARN_VERSION"
73+
74+
RUN ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
75+
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg
6776

6877
CMD [ "node" ]

4/alpine/Dockerfile

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1-
FROM alpine:3.4
1+
FROM alpine:3.4 as builder
22

33
ENV NODE_VERSION 4.9.1
44

55
COPY .ccache /root/.ccache
66

7-
RUN addgroup -g 1000 node \
8-
&& adduser -u 1000 -G node -s /bin/sh -D node \
9-
&& apk add --no-cache \
7+
RUN apk add --no-cache \
108
libstdc++ \
11-
&& apk add --no-cache --virtual .build-deps \
9+
&& apk add --no-cache \
1210
binutils-gold \
1311
ccache \
1412
curl \
@@ -44,32 +42,36 @@ RUN addgroup -g 1000 node \
4442
&& ln -s /usr/bin/ccache /usr/local/bin/g++ \
4543
&& ./configure \
4644
&& make -j$(getconf _NPROCESSORS_ONLN) \
47-
&& make install \
48-
&& apk del .build-deps \
49-
&& cd .. \
50-
&& rm -Rf "node-v$NODE_VERSION" \
51-
&& rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
52-
&& rm /usr/local/bin/gcc \
53-
&& rm /usr/local/bin/g++
45+
&& make install
5446

5547
ENV YARN_VERSION 1.5.1
5648

57-
RUN apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \
58-
&& for key in \
59-
6A010C5166006599AA17F08146C2130DFD2497F5 \
60-
; do \
61-
gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
62-
gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
63-
gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
49+
RUN for key in \
50+
6A010C5166006599AA17F08146C2130DFD2497F5 \
51+
; do \
52+
gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
53+
gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
54+
gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
6455
done \
6556
&& curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \
6657
&& curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \
67-
&& gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
68-
&& mkdir -p /opt \
69-
&& tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \
70-
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
71-
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \
72-
&& rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
73-
&& apk del .build-deps-yarn
58+
&& gpg --batch --verify "yarn-v$YARN_VERSION.tar.gz.asc" "yarn-v$YARN_VERSION.tar.gz" \
59+
&& tar -xzf "yarn-v$YARN_VERSION.tar.gz"
60+
61+
FROM alpine:3.4
62+
63+
ENV NODE_VERSION 4.9.1
64+
ENV YARN_VERSION 1.5.1
65+
66+
RUN addgroup -g 1000 node \
67+
&& adduser -u 1000 -G node -s /bin/sh -D node \
68+
&& apk add --no-cache \
69+
libstdc++
70+
71+
COPY --from=builder /usr/local /usr/local
72+
COPY --from=builder "yarn-v$YARN_VERSION" "/opt/yarn-v$YARN_VERSION"
73+
74+
RUN ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
75+
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg
7476

7577
CMD [ "node" ]

6/alpine/Dockerfile

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1-
FROM alpine:3.4
1+
FROM alpine:3.4 as builder
22

33
ENV NODE_VERSION 6.14.1
44

55
COPY .ccache /root/.ccache
66

7-
RUN addgroup -g 1000 node \
8-
&& adduser -u 1000 -G node -s /bin/sh -D node \
9-
&& apk add --no-cache \
7+
RUN apk add --no-cache \
108
libstdc++ \
11-
&& apk add --no-cache --virtual .build-deps \
9+
&& apk add --no-cache \
1210
binutils-gold \
1311
ccache \
1412
curl \
@@ -44,32 +42,36 @@ RUN addgroup -g 1000 node \
4442
&& ln -s /usr/bin/ccache /usr/local/bin/g++ \
4543
&& ./configure \
4644
&& make -j$(getconf _NPROCESSORS_ONLN) \
47-
&& make install \
48-
&& apk del .build-deps \
49-
&& cd .. \
50-
&& rm -Rf "node-v$NODE_VERSION" \
51-
&& rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
52-
&& rm /usr/local/bin/gcc \
53-
&& rm /usr/local/bin/g++
45+
&& make install
5446

5547
ENV YARN_VERSION 1.5.1
5648

57-
RUN apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \
58-
&& for key in \
59-
6A010C5166006599AA17F08146C2130DFD2497F5 \
60-
; do \
61-
gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
62-
gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
63-
gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
49+
RUN for key in \
50+
6A010C5166006599AA17F08146C2130DFD2497F5 \
51+
; do \
52+
gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
53+
gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
54+
gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
6455
done \
6556
&& curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \
6657
&& curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \
67-
&& gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
68-
&& mkdir -p /opt \
69-
&& tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \
70-
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
71-
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \
72-
&& rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
73-
&& apk del .build-deps-yarn
58+
&& gpg --batch --verify "yarn-v$YARN_VERSION.tar.gz.asc" "yarn-v$YARN_VERSION.tar.gz" \
59+
&& tar -xzf "yarn-v$YARN_VERSION.tar.gz"
60+
61+
FROM alpine:3.4
62+
63+
ENV NODE_VERSION 6.14.1
64+
ENV YARN_VERSION 1.5.1
65+
66+
RUN addgroup -g 1000 node \
67+
&& adduser -u 1000 -G node -s /bin/sh -D node \
68+
&& apk add --no-cache \
69+
libstdc++
70+
71+
COPY --from=builder /usr/local /usr/local
72+
COPY --from=builder "yarn-v$YARN_VERSION" "/opt/yarn-v$YARN_VERSION"
73+
74+
RUN ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
75+
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg
7476

7577
CMD [ "node" ]

8/alpine/Dockerfile

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1-
FROM alpine:3.6
1+
FROM alpine:3.6 as builder
22

33
ENV NODE_VERSION 8.11.1
44

55
COPY .ccache /root/.ccache
66

7-
RUN addgroup -g 1000 node \
8-
&& adduser -u 1000 -G node -s /bin/sh -D node \
9-
&& apk add --no-cache \
7+
RUN apk add --no-cache \
108
libstdc++ \
11-
&& apk add --no-cache --virtual .build-deps \
9+
&& apk add --no-cache \
1210
binutils-gold \
1311
ccache \
1412
curl \
@@ -44,32 +42,36 @@ RUN addgroup -g 1000 node \
4442
&& ln -s /usr/bin/ccache /usr/local/bin/g++ \
4543
&& ./configure \
4644
&& make -j$(getconf _NPROCESSORS_ONLN) \
47-
&& make install \
48-
&& apk del .build-deps \
49-
&& cd .. \
50-
&& rm -Rf "node-v$NODE_VERSION" \
51-
&& rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
52-
&& rm /usr/local/bin/gcc \
53-
&& rm /usr/local/bin/g++
45+
&& make install
5446

5547
ENV YARN_VERSION 1.5.1
5648

57-
RUN apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \
58-
&& for key in \
59-
6A010C5166006599AA17F08146C2130DFD2497F5 \
60-
; do \
61-
gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
62-
gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
63-
gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
49+
RUN for key in \
50+
6A010C5166006599AA17F08146C2130DFD2497F5 \
51+
; do \
52+
gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
53+
gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
54+
gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
6455
done \
6556
&& curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \
6657
&& curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \
67-
&& gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
68-
&& mkdir -p /opt \
69-
&& tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \
70-
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
71-
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \
72-
&& rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
73-
&& apk del .build-deps-yarn
58+
&& gpg --batch --verify "yarn-v$YARN_VERSION.tar.gz.asc" "yarn-v$YARN_VERSION.tar.gz" \
59+
&& tar -xzf "yarn-v$YARN_VERSION.tar.gz"
60+
61+
FROM alpine:3.6
62+
63+
ENV NODE_VERSION 8.11.1
64+
ENV YARN_VERSION 1.5.1
65+
66+
RUN addgroup -g 1000 node \
67+
&& adduser -u 1000 -G node -s /bin/sh -D node \
68+
&& apk add --no-cache \
69+
libstdc++
70+
71+
COPY --from=builder /usr/local /usr/local
72+
COPY --from=builder "yarn-v$YARN_VERSION" "/opt/yarn-v$YARN_VERSION"
73+
74+
RUN ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
75+
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg
7476

7577
CMD [ "node" ]

9/alpine/Dockerfile

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1-
FROM alpine:3.6
1+
FROM alpine:3.6 as builder
22

33
ENV NODE_VERSION 9.11.1
44

55
COPY .ccache /root/.ccache
66

7-
RUN addgroup -g 1000 node \
8-
&& adduser -u 1000 -G node -s /bin/sh -D node \
9-
&& apk add --no-cache \
7+
RUN apk add --no-cache \
108
libstdc++ \
11-
&& apk add --no-cache --virtual .build-deps \
9+
&& apk add --no-cache \
1210
binutils-gold \
1311
ccache \
1412
curl \
@@ -44,32 +42,36 @@ RUN addgroup -g 1000 node \
4442
&& ln -s /usr/bin/ccache /usr/local/bin/g++ \
4543
&& ./configure \
4644
&& make -j$(getconf _NPROCESSORS_ONLN) \
47-
&& make install \
48-
&& apk del .build-deps \
49-
&& cd .. \
50-
&& rm -Rf "node-v$NODE_VERSION" \
51-
&& rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
52-
&& rm /usr/local/bin/gcc \
53-
&& rm /usr/local/bin/g++
45+
&& make install
5446

5547
ENV YARN_VERSION 1.5.1
5648

57-
RUN apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \
58-
&& for key in \
59-
6A010C5166006599AA17F08146C2130DFD2497F5 \
60-
; do \
61-
gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
62-
gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
63-
gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
49+
RUN for key in \
50+
6A010C5166006599AA17F08146C2130DFD2497F5 \
51+
; do \
52+
gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
53+
gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
54+
gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
6455
done \
6556
&& curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \
6657
&& curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \
67-
&& gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
68-
&& mkdir -p /opt \
69-
&& tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \
70-
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
71-
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \
72-
&& rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
73-
&& apk del .build-deps-yarn
58+
&& gpg --batch --verify "yarn-v$YARN_VERSION.tar.gz.asc" "yarn-v$YARN_VERSION.tar.gz" \
59+
&& tar -xzf "yarn-v$YARN_VERSION.tar.gz"
60+
61+
FROM alpine:3.6
62+
63+
ENV NODE_VERSION 9.11.1
64+
ENV YARN_VERSION 1.5.1
65+
66+
RUN addgroup -g 1000 node \
67+
&& adduser -u 1000 -G node -s /bin/sh -D node \
68+
&& apk add --no-cache \
69+
libstdc++
70+
71+
COPY --from=builder /usr/local /usr/local
72+
COPY --from=builder "yarn-v$YARN_VERSION" "/opt/yarn-v$YARN_VERSION"
73+
74+
RUN ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
75+
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg
7476

7577
CMD [ "node" ]

0 commit comments

Comments
 (0)