From 40b8101ae63956ea534f7dff32806d52cf72db5e Mon Sep 17 00:00:00 2001 From: Massiles Ghernaout <749-gm213204@users.noreply.www-apps.univ-lehavre.fr> Date: Sun, 30 Nov 2025 15:56:29 +0100 Subject: [PATCH] Dockerfiles for game/server and monitor/server --- game/server/Dockerfile | 30 ++++++++++++++++++++++++ game/server/db/db.js | 2 +- game/server/server.js | 11 +++++++++ monitor/server/Dockerfile | 20 +++++++++------- monitor/server/monitor-arduino.js | 2 +- monitor/server/run.sh | 38 ------------------------------- 6 files changed, 55 insertions(+), 48 deletions(-) create mode 100644 game/server/Dockerfile delete mode 100755 monitor/server/run.sh diff --git a/game/server/Dockerfile b/game/server/Dockerfile new file mode 100644 index 0000000..e00266b --- /dev/null +++ b/game/server/Dockerfile @@ -0,0 +1,30 @@ +# Use official Node.js LTS image +FROM node:18-slim + +# Set working directory +WORKDIR /app + +# Copy package.json and package-lock.json +COPY package*.json ./ + +# Install dependencies +RUN npm install --production + +# Install necessary tools for serialport compilation +RUN apt-get update && apt-get install -y \ + build-essential \ + python3 \ + git \ + && rm -rf /var/lib/apt/lists/* + +# Copy application code +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 ca3c131..ce33603 100644 --- a/game/server/db/db.js +++ b/game/server/db/db.js @@ -11,7 +11,7 @@ const pool = new Pool({ password: process.env.DB_PASSWORD, database: process.env.DB_NAME, port: process.env.DB_PORT || 5432, - host: 'localhost', + host: process.env.DB_HOST || 'localhost', }); // --- Configuration du Buffer d'Ecriture --- diff --git a/game/server/server.js b/game/server/server.js index 532630e..2d9d5ca 100644 --- a/game/server/server.js +++ b/game/server/server.js @@ -71,6 +71,8 @@ const arduinoPort = new SerialPort({ path: `/dev/${SENSOR_ID}`, baudRate: BAUD_RATE, autoOpen: true +}, err => { + console.log("Error on opening the serial port: ", err); }); const parser = arduinoPort.pipe(new ReadlineParser()); @@ -162,3 +164,12 @@ wss.on("connection", ws => { } }); }); + + +monitoringWSS.on("connection", ws => { + console.log("Monitor server connected!"); + + ws.on("close", () => { + console.log("Monitor server disconnected!"); + }); +}); diff --git a/monitor/server/Dockerfile b/monitor/server/Dockerfile index cd60af9..94510a5 100644 --- a/monitor/server/Dockerfile +++ b/monitor/server/Dockerfile @@ -1,16 +1,20 @@ -FROM node:18-slim +# Use official Node.js LTS image +FROM node:18-alpine -# Create app directory +# Set working directory WORKDIR /app -# Copy dependency files -COPY package.json package-lock.json* ./ +# Copy package.json and package-lock.json (if exists) +COPY package*.json ./ # Install dependencies RUN npm install --production -# Copy source -COPY monitor-arduino.js . +# Copy the rest of the application +COPY . . -# Default command; overridden at runtime -CMD ["node", "monitor-arduino.js"] +# Expose default port (optional, can be overridden) +EXPOSE 8080 + +# Default command (arguments can be passed via docker run) +ENTRYPOINT ["node", "monitor-arduino.js"] diff --git a/monitor/server/monitor-arduino.js b/monitor/server/monitor-arduino.js index 26d08a5..95e5111 100644 --- a/monitor/server/monitor-arduino.js +++ b/monitor/server/monitor-arduino.js @@ -7,7 +7,7 @@ const minimist = require('minimist'); const args = minimist(process.argv.slice(2)); -const REMOTE_WS_URL = args.remote || "ws://localhost:9000"; +const REMOTE_WS_URL = args.remote || "ws://localhost:3001"; const LOCAL_PORT = args.port || 8080; console.log("Remote WebSocket URL:", REMOTE_WS_URL); diff --git a/monitor/server/run.sh b/monitor/server/run.sh deleted file mode 100755 index 8f9dc9f..0000000 --- a/monitor/server/run.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env bash -set -e - -SERIAL_PORT=${1:-/dev/ttyUSB0} -BAUD=${2:-9600} -HTTP_PORT=${3:-8000} - -IMAGE_NAME="monitor-arduino" - -echo "----------------------------------------" -echo "Building Docker image: $IMAGE_NAME" -echo "Serial Port: $SERIAL_PORT" -echo "Baud Rate: $BAUD" -echo "HTTP Port: $HTTP_PORT" -echo "----------------------------------------" - -docker build -t $IMAGE_NAME . - -EXTRA_FLAGS="" - -# If using /dev/pts/* (virtual serial), we must mount the pts filesystem -if [[ "$SERIAL_PORT" == /dev/pts/* ]]; then - echo "Detected pseudo-tty ($SERIAL_PORT) → enabling --privileged and /dev/pts bind mount" - EXTRA_FLAGS="--privileged -v /dev/pts:/dev/pts" -fi - -echo "Starting container..." - -docker run \ - --rm \ - $EXTRA_FLAGS \ - --device="$SERIAL_PORT" \ - -p "$HTTP_PORT:$HTTP_PORT" \ - $IMAGE_NAME \ - node monitor-arduino.js \ - --serial="$SERIAL_PORT" \ - --baud="$BAUD" \ - --http="$HTTP_PORT" -- GitLab