# --- Stage 1: Build --- # Usiamo un'immagine Node leggera per compilare l'app FROM node:20-alpine AS build # Impostiamo la directory di lavoro WORKDIR /app # Copiamo i file di definizione delle dipendenze COPY package.json package-lock.json* ./ # Installiamo le dipendenze (npm ci è più veloce e sicuro per le build automatizzate) RUN npm ci # Copiamo tutto il codice sorgente COPY . . # Compiliamo l'app per la produzione (genera la cartella /dist) RUN npm run build # --- Stage 2: Production --- # Usiamo Nginx per servire i file statici (molto più leggero di Node) FROM nginx:alpine AS production # Copiamo la configurazione custom di Nginx (vedi file successivo) COPY nginx.conf /etc/nginx/conf.d/default.conf # Copiamo i file compilati dallo stage precedente alla cartella di Nginx COPY --from=build /app/dist /usr/share/nginx/html # Esponiamo la porta 80 EXPOSE 80 # Avviamo Nginx CMD ["nginx", "-g", "daemon off;"]