diff --git a/Dockerfile b/Dockerfile
index 534ed786e4a2c5d99429f02987cec6c699e2ea47..0aa0e3d56db4bb73ddf843bef55eb838f8fb8f5f 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"]