# --- STAGE 1: Build dell'applicazione --- # Usiamo un'immagine con Node per installare le dipendenze e compilare FROM node:lts-alpine as build-stage # Impostiamo la cartella di lavoro WORKDIR /app # Copiamo prima i file di dipendenze (per sfruttare la cache di Docker) COPY package*.json ./ # Installiamo le dipendenze RUN npm install # Copiamo tutto il resto del codice sorgente COPY . . # Compiliamo il progetto per la produzione # (Questo crea la cartella 'dist' con i file ottimizzati) RUN npm run build # --- STAGE 2: Serve con Nginx --- # Usiamo un'immagine Nginx leggera per servire i file FROM nginx:stable-alpine as production-stage # Copiamo la configurazione personalizzata che abbiamo creato al punto 1 COPY nginx.conf /etc/nginx/nginx.conf # Copiamo i file compilati dallo Stage 1 dentro la cartella pubblica di Nginx # NOTA: Assicurati che il comando 'build' di Vue crei una cartella 'dist'. # Se il tuo progetto crea una cartella diversa (es. 'build'), modifica qui sotto. COPY --from=build-stage /app/dist /app # Esponiamo la porta 80 EXPOSE 80 # Avviamo Nginx CMD ["nginx", "-g", "daemon off;"]