From f38c0eaf7286670d7b902059cdc0532c087c6bf0 Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Tue, 12 May 2026 14:21:32 +0200 Subject: [PATCH] chore(docker): ristruttura Dockerfile e docker-compose per produzione - Multi-stage build: builder (npm ci + vite build) + runtime minimale - Immagine runtime senza devDependencies e senza sorgenti frontend - docker-compose: porta singola 3000, volume .segnapunti per persistenza stato - Aggiunge .dockerignore per escludere node_modules, test, dist dal contesto --- .dockerignore | 11 +++++++++++ Dockerfile | 28 ++++++++++++++++------------ docker-compose.yml | 10 +++++++--- 3 files changed, 34 insertions(+), 15 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..54c1431 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,11 @@ +node_modules +dist +dev-dist +.segnapunti +tests +playwright-report +test-results +*.md +.git +.gitignore +.vscode diff --git a/Dockerfile b/Dockerfile index cde4107..1b67a3c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,18 +1,22 @@ +# Stage 1: build frontend FROM node:20-alpine AS builder - -WORKDIR /usr/src/app -# Copia tutto +WORKDIR /app +COPY package*.json ./ +RUN npm ci COPY . . +RUN npm run build -# Aggiunge GIT ma serve solo se si vuole evidenziare un hash del commit -RUN apk add git +# Stage 2: runtime +FROM node:20-alpine +WORKDIR /app +ENV NODE_ENV=production PORT=3000 -# aggiunge l'ultima versione di node -RUN npm install -g npm@latest -# Installa tutte le dipendenze del progetto -RUN npm install +COPY package*.json ./ +RUN npm ci --omit=dev -# Qui fa partire il comando... -# Per adesso è dev perchè non ho capito bene il tutto... (Attilio) -CMD ["npm", "run", "serve"] +COPY server.js ./ +COPY src/gameState.js src/websocket-handler.js src/server-utils.js src/persist.js ./src/ +COPY --from=builder /app/dist ./dist +EXPOSE 3000 +CMD ["node", "server.js"] diff --git a/docker-compose.yml b/docker-compose.yml index 6d9bbb6..47a94b8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,8 +1,12 @@ services: segnapunti: build: . + container_name: segnapunti ports: - - 3000:3000 - - 3001:3001 - container_name: segnapunti-container + - "3000:3000" + volumes: + - segnapunti-state:/app/.segnapunti + restart: unless-stopped +volumes: + segnapunti-state: