diff --git a/game/server/Dockerfile b/game/server/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..e00266b078e9dec9171933b9b39b04b535c3273a --- /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 ca3c1314e51327449b62cc26f377fde149f8eb19..ce33603dcbbffe12e804803cbc19597214fcaf65 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 532630e3e62202a80b7243c06c3b7f1bd66c5285..2d9d5ca5f17dccc07103d5500ac178468cfdfe2d 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 cd60af9c75043cd0c1871a5fa3df508859049cc3..94510a5bb3b4e274597664ca4b78ffb8fd75a1e0 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 26d08a59e4a24b4c904a16bf16d69277054e9be6..95e5111c264d3f800359cfd97d23f7f5ae5f17b1 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 8f9dc9f084b08cd57bc83d6c11f9c4fcfdb2286a..0000000000000000000000000000000000000000 --- 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"