diff --git a/Dockerfile_ExpressAPI b/Dockerfile_ExpressAPI index 8f32890ac7105220d0326802ceb976290266fd9d..c37523be26bd2db4bcb4b8e4c90af9e67ab9f1f2 100644 --- a/Dockerfile_ExpressAPI +++ b/Dockerfile_ExpressAPI @@ -1,5 +1,8 @@ ARG BUILD_WORKDIR=/dojo/ExpressAPI + + + ######################################################################## Build stage FROM node:20-bullseye AS builder LABEL maintainer="Michaël Minelli <michael-jean.minelli@hesge.ch>" @@ -9,6 +12,7 @@ ARG BUILD_WORKDIR # Create app directory ADD ExpressAPI/ ${BUILD_WORKDIR}/ +ADD .env ${BUILD_WORKDIR}/.env WORKDIR ${BUILD_WORKDIR} @@ -20,6 +24,24 @@ RUN npm run build + +######################################################################## Database migration stage +FROM node:20-bullseye AS database-migration +LABEL maintainer="Michaël Minelli <michael-jean.minelli@hesge.ch>" +LABEL Description="Express API for Dojo - Database migration stage" + +ARG BUILD_WORKDIR + +COPY --from=builder ${BUILD_WORKDIR}/ ${BUILD_WORKDIR}/ + +WORKDIR ${BUILD_WORKDIR} + +# Database migration +RUN npm run database:deploy + + + + ######################################################################## Run stage FROM node:20-bullseye LABEL maintainer="Michaël Minelli <michael-jean.minelli@hesge.ch>" @@ -31,9 +53,9 @@ 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 ./.env +COPY --from=builder ${BUILD_WORKDIR}/.env ./.env EXPOSE 30992 -CMD [ "npm", "run", "start:migrate:prod" ] +CMD [ "npm", "run", "start:prod" ] #ENTRYPOINT ["tail", "-f", "/dev/null"] diff --git a/ExpressAPI/package.json b/ExpressAPI/package.json index e4dfc8b8bf3ad2825b7e5575688443e1f5da867c..1ec1cb8061a63d118e88bade33d5ad64d4e171ea 100644 --- a/ExpressAPI/package.json +++ b/ExpressAPI/package.json @@ -6,11 +6,13 @@ "author" : "Michaël Minelli <michael-jean.minelli@hesge.ch>", "main" : "app.js", "scripts" : { - "clean" : "rm -R dist/*", - "build" : "npx prisma generate; npx tsc --project ./", - "start:dev" : "npx nodemon src/app.ts", - "start:prod" : "NODE_ENV=production npx node --max-http-header-size=1048576 dist/app.js", - "start:migrate:prod": "npx prisma migrate deploy && npx prisma db seed && npm run start:prod" + "clean" : "rm -R dist/*", + "build" : "npx prisma generate && npx tsc --project ./", + "database:migrate": "npx prisma migrate deploy", + "database:seed" : "npx prisma db seed", + "database:deploy" : "npm run database:migrate && npm run database:seed", + "start:dev" : "npx nodemon src/app.ts", + "start:prod" : "NODE_ENV=production npx node --max-http-header-size=1048576 dist/app.js" }, "prisma" : { "seed": "ts-node prisma/seed.ts"