backend.Dockerfile 881 B

1234567891011121314151617181920212223242526272829303132333435
  1. ARG NODE_IMAGE=node:20-alpine
  2. FROM ${NODE_IMAGE} AS build
  3. WORKDIR /app
  4. COPY backend/package*.json ./
  5. RUN npm ci
  6. COPY backend/prisma ./prisma
  7. RUN npm run prisma:generate
  8. COPY backend/ ./
  9. RUN npm run build
  10. FROM ${NODE_IMAGE} AS runtime
  11. WORKDIR /app
  12. ENV NODE_ENV=production
  13. COPY backend/package*.json ./
  14. RUN npm ci --include=dev
  15. COPY --from=build /app/node_modules/.prisma ./node_modules/.prisma
  16. COPY --from=build /app/node_modules/@prisma/client ./node_modules/@prisma/client
  17. COPY --from=build /app/prisma ./prisma
  18. COPY backend/prisma/seed-initial.cjs ./prisma/seed-initial.cjs
  19. COPY backend/prisma/seed-demo.cjs ./prisma/seed-demo.cjs
  20. COPY --from=build /app/dist ./dist
  21. COPY docker/backend-entrypoint.sh /usr/local/bin/backend-entrypoint.sh
  22. RUN chmod +x /usr/local/bin/backend-entrypoint.sh
  23. EXPOSE 3000
  24. ENTRYPOINT ["backend-entrypoint.sh"]
  25. CMD ["npm", "run", "start:prod"]