# --- Etapa 1: build del bundle Angular --- # Node 20 LTS: soportado oficialmente por Angular 19 (el host de desarrollo usa # Node 24, no soportado; en la imagen fijamos una versión soportada a propósito). FROM node:20-alpine AS build WORKDIR /app # Instalar dependencias con caché de capas (primero los manifiestos). # Se usa `npm install` en vez de `npm ci`: Angular arrastra dependencias opcionales # por plataforma (@esbuild/*, @rollup/*) y el lockfile, generado en macOS, no fija # las variantes de Linux que necesita la imagen. `npm ci` (estricto) fallaría; este # `npm install` respeta el lock y resuelve además los binarios de la plataforma. COPY package.json package-lock.json ./ RUN npm install --no-audit --no-fund # Código y build de producción. COPY . . RUN npm run build # --- Etapa 2: servir estáticos con Nginx --- FROM nginx:1.27-alpine AS runtime ENV TZ=Europe/Madrid # Config propia: SPA fallback + proxy /api hacia el backend. COPY nginx.conf /etc/nginx/conf.d/default.conf COPY --from=build /app/dist/frontend/browser /usr/share/nginx/html EXPOSE 80