# ========================================================================== # Acepla — Multi-stage Dockerfile # Stage 1: Build Astro (genera dist/ estático) # Stage 2: nginx sirve los estáticos (imagen final < 30MB) # ========================================================================== # ---------- Stage 1: Build ---------- FROM node:22-alpine AS builder WORKDIR /app # Instalar dependencias (cache layer) COPY package.json package-lock.json* ./ RUN npm ci --ignore-scripts # Copiar código y construir COPY . . RUN npm run build # ---------- Stage 2: Serve ---------- FROM nginx:alpine LABEL maintainer="Acepla" LABEL description="Acepla - Nueva Maquinaria S.A. | Sitio estático" # Copiar build estático al document root de nginx COPY --from=builder /app/dist /usr/share/nginx/html # Configuración de nginx (gzip, cache, rutas SPA-friendly) COPY nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]