# Stage 1: Build FROM node:18-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: Run FROM node:18-alpine WORKDIR /app # Install serve to run the application RUN npm install -g serve # Copy built application from builder COPY --from=builder /app/dist ./dist # Expose port EXPOSE 3000 # Health check HEALTHCHECK --interval=10s --timeout=5s --retries=5 \ CMD node -e "require('http').get('http://localhost:3000', (r) => {if (r.statusCode !== 200) throw new Error(r.statusCode)})" # Start the application CMD ["serve", "-s", "dist", "-l", "3000"]