# Build FROM node:22-alpine AS builder WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci COPY prisma ./prisma COPY prisma.config.ts ./ COPY tsconfig.json tsconfig.build.json nest-cli.json ./ COPY src ./src RUN npx prisma generate RUN npm run build # Production FROM node:22-alpine AS runner WORKDIR /app ENV NODE_ENV=production RUN apk add --no-cache openssl COPY package.json package-lock.json ./ RUN npm ci --omit=dev && npm install prisma ts-node typescript --no-save COPY prisma ./prisma COPY prisma.config.ts ./ 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 COPY docker-entrypoint.sh ./ RUN chmod +x docker-entrypoint.sh \ && npx prisma generate EXPOSE 3000 ENTRYPOINT ["./docker-entrypoint.sh"]