feat: configure realtime services and update environment variables

This commit is contained in:
Giuseppe Raffa
2026-04-14 13:23:26 +02:00
parent 0ae64d0c5b
commit 1044837080
4 changed files with 98 additions and 86 deletions

View File

@@ -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

View File

@@ -1,5 +1,3 @@
PORT=3004
VERSION=1.0.0
VERSION_BUILD=1.0
VERSION_STATE=beta

View File

@@ -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();
});

View File

@@ -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}`);
console.log(`[WS] Realtime websocket server`);