diff --git a/Dockerfile b/Dockerfile index 27a9fd9..c8e4f88 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,17 +3,16 @@ FROM node:20-bookworm AS builder WORKDIR /app -# Copiamo solo il package.json inizialmente per sfruttare la cache dei layer di Docker +# Copiamo il package.json. Non usiamo npm ci perché richiede obbligatoriamente il package-lock.json COPY package.json ./ -# Installiamo tutte le dipendenze (incluse quelle di sviluppo necessarie per il build) -# Usiamo npm install invece di npm ci per evitare errori se manca il package-lock.json +# Installiamo tutte le dipendenze necessarie per il build (incluse le devDependencies) RUN npm install --legacy-peer-deps --no-audit --no-fund # Copiamo il resto del codice sorgente COPY . . -# Eseguiamo il build del frontend (Vite genererà la cartella /dist) +# Eseguiamo il build del frontend (genera la cartella /dist) RUN npm run build # Stage 2: Setup del Server di Produzione @@ -21,25 +20,24 @@ FROM node:20-bookworm-slim WORKDIR /app -# Copiamo il package.json per installare le dipendenze di produzione +# Copiamo il package.json per installare le dipendenze di runtime COPY package.json ./ -# Installiamo SOLO le dipendenze di produzione -# --omit=dev è il modo moderno per escludere le devDependencies +# Installiamo SOLO le dipendenze di produzione per mantenere l'immagine leggera RUN npm install --omit=dev --legacy-peer-deps --no-audit --no-fund -# Copiamo i file compilati del frontend dallo stage precedente +# Copiamo i file compilati (dist) dallo stage builder COPY --from=builder /app/dist ./dist # Copiamo il file del server Node.js COPY server.js ./ -# Impostiamo le variabili d'ambiente di default +# Configurazioni di ambiente ENV NODE_ENV=production ENV PORT=3000 -# Esponiamo la porta del server +# Esponiamo la porta 3000 EXPOSE 3000 -# Avviamo il server direttamente con node per una migliore gestione dei log e dei segnali +# Avvio dell'applicazione CMD ["node", "server.js"]