From 842ab157d3abad7195effb7ef1338d0badbe1a30 Mon Sep 17 00:00:00 2001 From: Massiles Ghernaout <749-gm213204@users.noreply.www-apps.univ-lehavre.fr> Date: Wed, 3 Dec 2025 09:21:48 +0100 Subject: [PATCH 1/2] env setup review, all good --- game/server/Dockerfile | 3 --- game/server/db/db.js | 7 +++++-- game/server/package.json | 6 +++++- game/server/server.js | 8 ++++++-- monitor/server/package.json | 2 -- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/game/server/Dockerfile b/game/server/Dockerfile index e00266b..fda7af0 100644 --- a/game/server/Dockerfile +++ b/game/server/Dockerfile @@ -23,8 +23,5 @@ COPY . . # Expose ports (HTTP and monitoring) EXPOSE 3000 3001 -# Ensure environment variables are loaded from host -ENV DOTENV_CONFIG_PATH=../../.env - # Run the app ENTRYPOINT ["node", "server.js"] diff --git a/game/server/db/db.js b/game/server/db/db.js index 67660c2..886063f 100644 --- a/game/server/db/db.js +++ b/game/server/db/db.js @@ -1,9 +1,12 @@ -require('dotenv').config(); +if (process.NODE_ENV != "production") { + // en mode dev, charger les vars d'environnements + // depuis le fichier .env + require("dotenv").config() +} const { Pool } = require('pg'); // --- Configuration de la Connexion BDD --- -// Utilisation des variables definies dans le fichier .env pour la securite const pool = new Pool({ user: process.env.DB_USER, password: process.env.DB_PASSWORD, diff --git a/game/server/package.json b/game/server/package.json index 4450e1d..7d59e00 100644 --- a/game/server/package.json +++ b/game/server/package.json @@ -1,10 +1,14 @@ { + "name": "game-server", + "type": "commonjs", "dependencies": { - "dotenv": "^17.2.3", "express": "^5.1.0", "pg": "^8.16.3", "minimist": "^1.2.8", "serialport": "^13.0.0", "ws": "^8.18.3" + }, + "devDependencies": { + "dotenv": "^17.2.3" } } diff --git a/game/server/server.js b/game/server/server.js index 6cb061e..70dcf92 100644 --- a/game/server/server.js +++ b/game/server/server.js @@ -1,5 +1,9 @@ -// Chargement de la configuration sécurisée (.env) -require('dotenv').config(); +if (process.NODE_ENV != "production") { + // en mode dev, charger les vars d'environnements + // depuis le fichier .env + require("dotenv").config() +} + const minimist = require('minimist'); const express = require('express'); diff --git a/monitor/server/package.json b/monitor/server/package.json index 3461a1f..83c59fd 100644 --- a/monitor/server/package.json +++ b/monitor/server/package.json @@ -1,7 +1,5 @@ { "name": "monitor-arduino", - "version": "1.0.0", - "main": "monitor-arduino.js", "type": "commonjs", "dependencies": { "express": "^4.21.2", -- GitLab From 987c5e628c462393ac423b4b9f910303d9e92cf3 Mon Sep 17 00:00:00 2001 From: Massiles Ghernaout <749-gm213204@users.noreply.www-apps.univ-lehavre.fr> Date: Wed, 3 Dec 2025 10:52:20 +0100 Subject: [PATCH 2/2] Made sure that the frontends are built before running in our containers --- docker-compose.yml | 8 ++++++-- game/client/Dockerfile | 32 +++++++++++++++++++++----------- game/client/src/Game.tsx | 5 ++++- game/client/tsconfig.json | 16 ++++++++++++---- monitor/client/Dockerfile | 32 +++++++++++++++++++++----------- monitor/client/tsconfig.json | 16 ++++++++++++---- 6 files changed, 76 insertions(+), 33 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 09117fa..df773ec 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -34,19 +34,23 @@ services: game-client: image: game-client - network_mode: "host" + #network_mode: "host" container_name: game-client stdin_open: true tty: true + ports: + - 5173:80 depends_on: - game-server monitor-client: image: monitor-client - network_mode: "host" + #network_mode: "host" container_name: monitor-client stdin_open: true tty: true + ports: + - 5174:80 depends_on: - monitor-arduino diff --git a/game/client/Dockerfile b/game/client/Dockerfile index 96e141a..b5d617e 100644 --- a/game/client/Dockerfile +++ b/game/client/Dockerfile @@ -1,20 +1,30 @@ -# Use official Node image -FROM node:20-alpine +# --- Stage 1: Build --- +FROM node:20-alpine AS builder -# Set working directory WORKDIR /app -# Copy package.json and lock file -COPY package*.json ./ - # Install dependencies +COPY package.json package-lock.json ./ RUN npm install -# Copy the rest of the source code +# Copy the rest of the project COPY . . -# Expose Vite dev server port -EXPOSE 5173 +# Build Vite React app +RUN npm run build + + +# --- Stage 2: Serve build files --- +FROM nginx:alpine + +# Remove default nginx website +RUN rm -rf /usr/share/nginx/html/* + +# Copy Vite build output to nginx +COPY --from=builder /app/dist /usr/share/nginx/html + +# Expose port 80 +EXPOSE 80 + +CMD ["nginx", "-g", "daemon off;"] -# Start Vite dev server -CMD ["npm", "run", "dev", "--", "--host"] diff --git a/game/client/src/Game.tsx b/game/client/src/Game.tsx index aec1f96..7639057 100644 --- a/game/client/src/Game.tsx +++ b/game/client/src/Game.tsx @@ -236,7 +236,10 @@ export default function Game() { style={{ width: "100%", height: "100%" }} /> -