# syntax=docker/dockerfile:1 # ---- Production dependencies (includes prisma CLI for migrations) ---- FROM node:20-alpine AS deps WORKDIR /app RUN apk add --no-cache python3 make g++ openssl COPY package*.json ./ COPY prisma ./prisma RUN npm ci --omit=dev \ && npm install prisma@^6.14.0 \ && npx prisma generate # ---- Build the NestJS app ---- FROM node:20-alpine AS builder WORKDIR /app RUN apk add --no-cache python3 make g++ openssl COPY package*.json ./ COPY prisma ./prisma RUN npm ci COPY . . RUN npm run build # ---- Runtime image ---- FROM node:20-alpine AS runner WORKDIR /app ENV NODE_ENV=production RUN apk add --no-cache openssl wget COPY --from=deps /app/node_modules ./node_modules COPY --from=builder /app/dist ./dist COPY --from=builder /app/public ./public COPY --from=builder /app/prisma ./prisma COPY package*.json ./ EXPOSE 3001 # Apply migrations on every start (idempotent), then launch the API CMD ["sh", "-c", "npx prisma migrate deploy && node dist/main"]