From a4e246cf313cfc35a27338142c76dd410a85432c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <michael@minelli.me>
Date: Wed, 5 Jul 2023 19:05:48 +0200
Subject: [PATCH] Dockerfile => Update with multi-stage and Prisma support

---
 Dockerfile_ExpressAPI | 37 ++++++++++++++++++++++++++++++-------
 1 file changed, 30 insertions(+), 7 deletions(-)

diff --git a/Dockerfile_ExpressAPI b/Dockerfile_ExpressAPI
index 4701ead..7651ef9 100644
--- a/Dockerfile_ExpressAPI
+++ b/Dockerfile_ExpressAPI
@@ -1,16 +1,39 @@
-FROM node:20-bullseye
+ARG BUILD_WORKDIR=/dojo/ExpressAPI
+
+######################################################################## Build stage
+FROM node:20-bullseye AS builder
 LABEL maintainer="Michaël Minelli <michael-jean.minelli@hesge.ch>"
-LABEL Description="Express API for Dojo"
+LABEL Description="Express API for Dojo - Build stage"
+
+ARG BUILD_WORKDIR
 
-ADD ExpressAPI/ /dojo/ExpressAPI/
-ADD .env /dojo/ExpressAPI/.env
+# Create app directory
+ADD ExpressAPI/ ${BUILD_WORKDIR}/
 
-WORKDIR /dojo/ExpressAPI/
+WORKDIR ${BUILD_WORKDIR}
 
+# Install app dependencies
 RUN npm install
+
+# Build app
 RUN npm run build
 
+
+
+######################################################################## Run stage
+FROM node:20-bullseye
+LABEL maintainer="Michaël Minelli <michael-jean.minelli@hesge.ch>"
+LABEL Description="Express API for Dojo - Run stage"
+
+ARG BUILD_WORKDIR
+
+COPY --from=builder ${BUILD_WORKDIR}/node_modules ./node_modules
+COPY --from=builder ${BUILD_WORKDIR}/package*.json ./
+COPY --from=builder ${BUILD_WORKDIR}/dist ./dist
+COPY --from=builder ${BUILD_WORKDIR}/prisma ./prisma
+ADD .env ${BUILD_WORKDIR}/.env
+
 EXPOSE 30992
 
-ENTRYPOINT [ "npm", "run", "start:prod" ]
-#ENTRYPOINT ["tail", "-f", "/dev/null"]
\ No newline at end of file
+CMD [  "npm", "run", "start:migrate:prod" ]
+#ENTRYPOINT ["tail", "-f", "/dev/null"]
-- 
GitLab