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