FROM node:22-alpine AS builder WORKDIR /app COPY package*.json ./ COPY prisma ./prisma RUN npm ci RUN npx prisma generate COPY . . RUN npm run build # ───────────────────────────────────────────────────────────────────────────── FROM node:22-alpine AS runner WORKDIR /app ENV NODE_ENV=production COPY package*.json ./ COPY prisma ./prisma RUN npm ci --omit=dev # prisma CLI is a devDependency so it's absent after --omit=dev. # Copy the CLI and the generated client from the builder stage so that # `npx prisma migrate deploy` works when the migrate service runs this image. COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma COPY --from=builder /app/node_modules/prisma ./node_modules/prisma COPY --from=builder /app/node_modules/.bin/prisma ./node_modules/.bin/prisma COPY --from=builder /app/dist ./dist EXPOSE 3001 CMD ["node", "dist/main.js"]