# Stage 1: Build the React Application FROM node:20-bookworm AS builder WORKDIR /app # Copiamo il package.json. Non usiamo npm ci perché richiede obbligatoriamente il package-lock.json COPY package.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 (genera 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 runtime COPY package.json ./ # 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 (dist) dallo stage builder COPY --from=builder /app/dist ./dist # Copiamo il file del server Node.js COPY server.js ./ # Configurazioni di ambiente ENV NODE_ENV=production ENV PORT=3000 # Esponiamo la porta 3000 EXPOSE 3000 # Avvio dell'applicazione CMD ["node", "server.js"]