From 66b5d0dd957c3bed5945c1cdae6f202b9a3aabd8 Mon Sep 17 00:00:00 2001
From: Oleg Fiksel <oleg.fiksel@accenture.com>
Date: Tue, 23 Oct 2018 21:50:04 +0200
Subject: [PATCH] Use multistaged Docker build.

---
 Dockerfile | 24 ++++++++++--------------
 1 file changed, 10 insertions(+), 14 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index 534ed78..0aa0e3d 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,21 +1,17 @@
-FROM node:alpine
+FROM node:alpine AS BUILD
 COPY . /tmp/src
-
-RUN apk add --no-cache -t build-deps make gcc g++ python ca-certificates libc-dev wget \
-    && cd /tmp/src \
+# install some dependencies needed for the build process
+RUN apk add --no-cache -t build-deps make gcc g++ python ca-certificates libc-dev wget
+RUN cd /tmp/src \
     && npm install \
-    && npm run build \
-    && mv build / \
-    && mv config / \
-    && mv node_modules / \
-    && cd / \
-    && rm -rf /tmp/* \
-    && apk del build-deps \
-    && sh -c 'cd /build/tools; for TOOL in *.js; do LINK="/usr/bin/$(basename $TOOL .js)"; echo -e "#!/bin/sh\ncd /data;\nnode /build/tools/$TOOL \$@" > $LINK; chmod +x $LINK; done'
+    && npm run build
 
+FROM node:alpine
 ENV NODE_ENV=production
-
+COPY --from=BUILD /tmp/src/build /build
+COPY --from=BUILD /tmp/src/config /config
+COPY --from=BUILD /tmp/src/node_modules /node_modules
+RUN sh -c 'cd /build/tools; for TOOL in *.js; do LINK="/usr/bin/$(basename $TOOL .js)"; echo -e "#!/bin/sh\ncd /data;\nnode /build/tools/$TOOL \$@" > $LINK; chmod +x $LINK; done'
 CMD node /build/src/discordas.js -p 9005 -c /data/config.yaml -f /data/discord-registration.yaml
-
 EXPOSE 9005
 VOLUME ["/data"]
-- 
GitLab