# Multi-stage build for React frontend FROM node:18-alpine as base WORKDIR /app # Copy package files COPY package.json package-lock.json* ./ # Install dependencies RUN npm ci --legacy-peer-deps || npm install --legacy-peer-deps # Development stage FROM base as development # Copy source code COPY . . # Expose port EXPOSE 3000 # Start development server CMD ["npm", "start"] # Build stage FROM base as build # Copy source code COPY . . # Build production bundle RUN npm run build # Production stage with nginx FROM nginx:alpine as production # Copy nginx configuration COPY nginx.conf /etc/nginx/conf.d/default.conf 2>/dev/null || echo "server { listen 80; location / { root /usr/share/nginx/html; index index.html; try_files \$uri \$uri/ /index.html; } }" > /etc/nginx/conf.d/default.conf # Copy built files from build stage COPY --from=build /app/build /usr/share/nginx/html # Expose port EXPOSE 80 # Start nginx CMD ["nginx", "-g", "daemon off;"]