# ============================================================================= # Dockerfile - Frontend Web # ERP Construccion - React + Vite + TypeScript # ============================================================================= # ----------------------------------------------------------------------------- # Stage 1: Base # ----------------------------------------------------------------------------- FROM node:20-alpine AS base WORKDIR /app # Copy package files COPY package*.json ./ # ----------------------------------------------------------------------------- # Stage 2: Development # ----------------------------------------------------------------------------- FROM base AS development # Install all dependencies RUN npm ci # Copy source code COPY . . # Expose Vite dev server port EXPOSE 5173 # Development command with hot reload CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0"] # ----------------------------------------------------------------------------- # Stage 3: Builder # ----------------------------------------------------------------------------- FROM base AS builder # Install all dependencies RUN npm ci # Copy source code COPY . . # Build for production RUN npm run build # ----------------------------------------------------------------------------- # Stage 4: Production (with nginx) # ----------------------------------------------------------------------------- FROM nginx:alpine AS production # Copy nginx config COPY nginx.conf /etc/nginx/conf.d/default.conf # Copy built files COPY --from=builder /app/dist /usr/share/nginx/html # Expose port EXPOSE 80 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD curl -f http://localhost/ || exit 1 CMD ["nginx", "-g", "daemon off;"]