From 44d944a5d50c30cf4ed4f701ddc90d36d5612ed9 Mon Sep 17 00:00:00 2001 From: fcarraUniSa Date: Tue, 23 Dec 2025 11:29:25 +0100 Subject: [PATCH] Update Dockerfile --- Dockerfile | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 12a909d..27a9fd9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,45 @@ -FROM node:18-alpine +# Stage 1: Build the React Application +FROM node:20-bookworm AS builder WORKDIR /app -COPY package*.json ./ -RUN npm ci --only=production +# Copiamo solo il package.json inizialmente per sfruttare la cache dei layer di Docker +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 +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) +RUN npm run build + +# Stage 2: Setup del Server di Produzione +FROM node:20-bookworm-slim + +WORKDIR /app + +# Copiamo il package.json per installare le dipendenze di produzione +COPY package.json ./ + +# Installiamo SOLO le dipendenze di produzione +# --omit=dev è il modo moderno per escludere le devDependencies +RUN npm install --omit=dev --legacy-peer-deps --no-audit --no-fund + +# Copiamo i file compilati del frontend dallo stage precedente +COPY --from=builder /app/dist ./dist + +# Copiamo il file del server Node.js +COPY server.js ./ + +# Impostiamo le variabili d'ambiente di default +ENV NODE_ENV=production +ENV PORT=3000 + +# Esponiamo la porta del server EXPOSE 3000 +# Avviamo il server direttamente con node per una migliore gestione dei log e dei segnali CMD ["node", "server.js"]