portal-payment-be/Dockerfile

31 lines
696 B
Docker

### Build stage
FROM node:20-alpine AS builder
WORKDIR /app
# install dependencies
COPY package.json package-lock.json* ./
RUN npm ci
# copy sources and generate prisma client, then build
COPY . .
RUN npx prisma generate
RUN npm run build
### Run stage
FROM node:20-alpine AS runner
WORKDIR /app
# only install production deps
COPY package.json package-lock.json* ./
RUN npm ci --omit=dev
# copy compiled app and prisma client artifacts from builder
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules/@prisma ./node_modules/@prisma
COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma
ENV NODE_ENV=production
EXPOSE 3000
CMD ["node", "dist/app.js"]