# Build stage FROM node:20-alpine AS builder WORKDIR /app # Copy package files COPY package*.json ./ COPY prisma ./prisma/ # Install dependencies RUN npm ci # Copy source code COPY . . # Generate Prisma client RUN npx prisma generate # Build TypeScript RUN npm run build # Production stage FROM node:20-alpine WORKDIR /app # Install OpenSSL for Prisma RUN apk add --no-cache openssl # Copy package files COPY package*.json ./ # Install production dependencies only RUN npm ci --only=production # Copy built files from builder COPY --from=builder /app/dist ./dist COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma COPY --from=builder /app/prisma ./prisma # Expose port EXPOSE 3001 # Start application CMD ["npm", "start"]