diff --git a/docker-compose.yml b/docker-compose.yml index 09117fa249a2cb097ac1c657a72f51d19641dcaa..df773ecc2fddb298a885b3ec639dcd6b04911b9f 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 96e141a64e69b3f73e3606dbdf1d34fbb1fddda6..b5d617e9ca8d8c1ef3e859a6e186da389bddc501 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 aec1f96d0aa469227a98fb7ee797e9bb177f7cf3..7639057ceb2701de0fce39e9eceb531e67bb83f1 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%" }} /> -
{score}
+
+ Score: {score}
+ Deaths: {deathCount} +
{!alive && (
diff --git a/game/client/tsconfig.json b/game/client/tsconfig.json index 1ffef600d959ec9e396d5a260bd3f5b927b2cef8..cf187c038c630b3829a966a477ca56451b04f4dd 100644 --- a/game/client/tsconfig.json +++ b/game/client/tsconfig.json @@ -1,7 +1,15 @@ { "files": [], "references": [ - { "path": "./tsconfig.app.json" }, - { "path": "./tsconfig.node.json" } - ] -} + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.node.json" + } + ], + "compilerOptions": { + "noUnusedLocals": false, + "noUnusedParameters": false + } +} \ No newline at end of file diff --git a/game/server/Dockerfile b/game/server/Dockerfile index e00266b078e9dec9171933b9b39b04b535c3273a..fda7af0550e10424cf63aa2310e580a3539616e5 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 67660c2cc48e402b8f28dd5a7e0caa93c1bc4d06..886063fb0c3504d65ef78c1addd207a5c846facf 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 4450e1dc2ce36ffb3abd167424d7ebb7d6303b06..7d59e00b213f801fdf0890f9001d1663743ca1ab 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 6cb061e107d722fc644b13dacfcb33ebbe5674c4..70dcf926ac97ed587859f07bac31ac265f951726 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/client/Dockerfile b/monitor/client/Dockerfile index 2510a9114336ea7ca970b5c50dde822f18328d62..b5d617e9ca8d8c1ef3e859a6e186da389bddc501 100644 --- a/monitor/client/Dockerfile +++ b/monitor/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 5174 +# 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/monitor/client/tsconfig.json b/monitor/client/tsconfig.json index 1ffef600d959ec9e396d5a260bd3f5b927b2cef8..cf187c038c630b3829a966a477ca56451b04f4dd 100644 --- a/monitor/client/tsconfig.json +++ b/monitor/client/tsconfig.json @@ -1,7 +1,15 @@ { "files": [], "references": [ - { "path": "./tsconfig.app.json" }, - { "path": "./tsconfig.node.json" } - ] -} + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.node.json" + } + ], + "compilerOptions": { + "noUnusedLocals": false, + "noUnusedParameters": false + } +} \ No newline at end of file diff --git a/monitor/server/package.json b/monitor/server/package.json index 3461a1f1fd04aa8b0cc0997451575e03c35783ee..83c59fdf96d9d88c64163de00a6da350a37c7de9 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",