# Multi-stage build for optimized production image # Stage 1: Build FROM node:22-alpine AS builder WORKDIR /app # Copy package files COPY package*.json ./ # Install dependencies RUN npm ci # Copy source code COPY . . # Build the application RUN npm run build # Stage 2: Production FROM node:22-alpine AS production WORKDIR /app # Install only production dependencies COPY package*.json ./ RUN npm ci --only=production # Copy built application from builder stage COPY --from=builder /app/dist ./dist # Expose application port EXPOSE 3000 # Set environment to production ENV NODE_ENV=production # Run the application CMD ["node", "dist/main"]