From 1044837080611b5733a20e80005932813433ab34 Mon Sep 17 00:00:00 2001 From: Giuseppe Raffa <77052701+sesee3@users.noreply.github.com> Date: Tue, 14 Apr 2026 13:23:26 +0200 Subject: [PATCH] feat: configure realtime services and update environment variables --- docker-compose.yml | 172 ++++++++++++++++++++++------------------- realtime/.env.example | 2 - realtime/src/index.js | 6 +- realtime/src/socket.js | 4 +- 4 files changed, 98 insertions(+), 86 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 93e926f..afd37b7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,32 +1,32 @@ services: - # auth: - # container_name: auth - # build: - # context: ./auth - # dockerfile: Dockerfile - # restart: unless-stopped - # command: npm run dev - # volumes: - # - ./auth:/app - # - /app/node_modules - # env_file: - # - ./auth/.env - # healthcheck: - # test: ["CMD", "node", "-e", "fetch('http://localhost:3006/health').then(r => r.ok ? process.exit(0) : process.exit(1))"] - # interval: 30s - # timeout: 5s - # retries: 3 - # networks: - # - meb-proxy-net - # - meb-internal - # ports: - # - "3006:3006" - # labels: - # - "traefik.enable=true" - # - "traefik.http.routers.auth.rule=Host(`auth.${URL_DOMAIN}`)" - # - "traefik.http.routers.auth.entrypoints=web" - # - "traefik.http.services.auth.loadbalancer.server.port=3006" - # - "traefik.docker.network=meb-proxy-net" + auth: + container_name: auth + build: + context: ./auth + dockerfile: Dockerfile + restart: unless-stopped + command: npm run dev + volumes: + - ./auth:/app + - /app/node_modules + env_file: + - ./auth/.env + healthcheck: + test: ["CMD", "node", "-e", "fetch('http://localhost:3006/health').then(r => r.ok ? process.exit(0) : process.exit(1))"] + interval: 30s + timeout: 5s + retries: 3 + networks: + - meb-public + - meb-private + ports: + - "3006:3006" + labels: + - "traefik.enable=true" + - "traefik.http.routers.auth.rule=Host(`auth.mebboat.it`)" + - "traefik.http.routers.auth.entrypoints=websecure" + - "traefik.http.services.auth.loadbalancer.server.port=3006" + - "traefik.docker.network=meb-public" api: container_name: api-services @@ -45,8 +45,6 @@ services: networks: - meb-public - meb-private - ports: - - "3003:3003" labels: - "traefik.enable=true" - "traefik.http.routers.api.rule=Host(`api.mebboat.it`)" @@ -55,56 +53,74 @@ services: - "traefik.http.routers.api.tls.certresolver=letsencrypt" - "traefik.docker.network=meb-public" - # console: - # build: - # context: ./console - # dockerfile: Dockerfile - # restart: unless-stopped - # command: npm run dev - # volumes: - # - ./console:/app - # - /app/node_modules - # env_file: - # - ./console/.env - # networks: - # - meb-proxy-net - # - meb-internal - # ports: - # - "3004:3004" + console: + build: + context: ./console + dockerfile: Dockerfile + restart: unless-stopped + command: npm run dev + volumes: + - ./console:/app + - /app/node_modules + env_file: + - ./console/.env + networks: + - meb-public + - meb-private + labels: + - "traefik.enable=true" + - "traefik.http.routers.console.rule=Host(`console.mebboat.it`)" + - "traefik.http.routers.console.entrypoints=websecure" + - "traefik.http.services.console.loadbalancer.server.port=3004" + - "traefik.http.routers.console.tls.certresolver=letsencrypt" + - "traefik.docker.network=meb-public" - # realtime: - # build: - # context: ./realtime - # dockerfile: Dockerfile - # restart: unless-stopped - # command: npm run dev - # ports: - # - "3002:3002" - # - "3102:3102" - # volumes: - # - ./realtime:/app - # - /app/node_modules - # env_file: - # - ./realtime/.env - # networks: - # - meb-proxy-net - # - meb-internal + realtime: + build: + context: ./realtime + dockerfile: Dockerfile + restart: unless-stopped + command: npm run dev + volumes: + - ./realtime:/app + - /app/node_modules + env_file: + - ./realtime/.env + networks: + - meb-private + - meb-public + labels: + - "traefik.enable=true" + - "traefik.http.routers.realtime.rule=Host(`realtime.mebboat.it`)" + - "traefik.http.routers.realtime.entrypoints=websecure" + - "traefik.http.services.realtime.loadbalancer.server.port=3002" + - "traefik.http.routers.realtime.tls.certresolver=letsencrypt" + - "traefik.docker.network=meb-public" - # ml: - # container_name: ml-service - # build: - # context: ./ml - # dockerfile: Dockerfile - # restart: unless-stopped - # volumes: - # - ./ml:/app - # env_file: - # - ./ml/.env - # ports: - # - "3005:3005" - # networks: - # - meb-proxy-net - # - meb-internal + - "traefik.http.services.realtime.loadbalancer.sticky.cookie=true" + - "traefik.http.services.realtime.loadbalancer.sticky.cookie.name=realtime-ws" + - "traefik.http.services.realtime.loadbalancer.sticky.cookie.secure=true" + + ml: + container_name: ml-service + build: + context: ./ml + dockerfile: Dockerfile + restart: unless-stopped + volumes: + - ./ml:/app + env_file: + - ./ml/.env + networks: + - meb-private + - meb-public + labels: + - "traefik.enable=true" + - "traefik.http.routers.ml.rule=Host(`ml.mebboat.it`)" + - "traefik.http.routers.ml.entrypoints=websecure" + - "traefik.http.services.ml.loadbalancer.server.port=8000" + - "traefik.http.routers.ml.tls.certresolver=letsencrypt" + - "traefik.docker.network=meb-public" # marine: # container_name: marine-service diff --git a/realtime/.env.example b/realtime/.env.example index 59fe0c6..eabfd71 100644 --- a/realtime/.env.example +++ b/realtime/.env.example @@ -1,5 +1,3 @@ -PORT=3004 - VERSION=1.0.0 VERSION_BUILD=1.0 VERSION_STATE=beta diff --git a/realtime/src/index.js b/realtime/src/index.js index fd8b443..693e337 100644 --- a/realtime/src/index.js +++ b/realtime/src/index.js @@ -36,7 +36,6 @@ app.get('/health', async (req, res) => { version: process.env.VERSION, build: process.env.VERSION_BUILD, state: process.env.VERSION_STATE, - port: process.env.PORT }); }); @@ -77,9 +76,8 @@ app.get('/sessions/:sensorId/csv', async (req, res) => { }); -const PORT = process.env.PORT || 3000; -const server = app.listen(PORT, '0.0.0.0', async () => { - console.log(`Realtime on port ${PORT}`); +const server = app.listen(3000, '0.0.0.0', async () => { + console.log(`Realtime started`); await require('./helper/authdb').initDB(); }); diff --git a/realtime/src/socket.js b/realtime/src/socket.js index d423d2d..3f64a61 100644 --- a/realtime/src/socket.js +++ b/realtime/src/socket.js @@ -6,7 +6,7 @@ const redisHelper = require('./helper/redis'); const influxWriter = require('./helper/influxWriter'); const ws = new WebSocket.Server({ - port: process.env.SOCKET_PORT, + port: 3000, perMessageDeflate: false, verifyClient: async (info, callback) => { const { query } = url.parse(info.req.url, true); @@ -107,4 +107,4 @@ ws.on('connection', async (client, req) => { }); }); -console.log(`[WS] Realtime websocket server on port: ${process.env.SOCKET_PORT}`); \ No newline at end of file +console.log(`[WS] Realtime websocket server`); \ No newline at end of file