Skip to content
Snippets Groups Projects
Commit 8901bf22 authored by michael.minelli's avatar michael.minelli
Browse files

Dockerfile => Add stage for database migration

parent 42f508ca
No related branches found
No related tags found
No related merge requests found
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"]
......@@ -7,10 +7,12 @@
"main" : "app.js",
"scripts" : {
"clean" : "rm -R dist/*",
"build" : "npx prisma generate; npx tsc --project ./",
"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",
"start:migrate:prod": "npx prisma migrate deploy && npx prisma db seed && npm run start:prod"
"start:prod" : "NODE_ENV=production npx node --max-http-header-size=1048576 dist/app.js"
},
"prisma" : {
"seed": "ts-node prisma/seed.ts"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment