- Pass service registry to load balancer for dependency injection - Remove dynamic imports of service registry in load balancer - Update service registration and health check logic - Enable token-service in docker-compose and service config - Add room names and rooms proxy endpoints - Improve logging for proxy requests and health checks - Update deploy script project name to sa4cps - Add test script for coroutine fix - Minor code cleanup and formatting
239 lines
6.3 KiB
YAML
239 lines
6.3 KiB
YAML
version: "3.8"
|
|
|
|
services:
|
|
# Database Services
|
|
mongodb:
|
|
image: mongo:5.0
|
|
container_name: mongodb
|
|
restart: unless-stopped
|
|
environment:
|
|
MONGO_INITDB_ROOT_USERNAME: admin
|
|
MONGO_INITDB_ROOT_PASSWORD: password123
|
|
ports:
|
|
- "27017:27017"
|
|
volumes:
|
|
- mongodb_data:/data/db
|
|
- ./init-mongo:/docker-entrypoint-initdb.d
|
|
networks:
|
|
- energy-network
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: redis
|
|
restart: unless-stopped
|
|
ports:
|
|
- "6379:6379"
|
|
volumes:
|
|
- redis_data:/data
|
|
networks:
|
|
- energy-network
|
|
|
|
# API Gateway
|
|
api-gateway:
|
|
build:
|
|
context: ./api-gateway
|
|
dockerfile: Dockerfile
|
|
container_name: api-gateway
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8000:8000"
|
|
environment:
|
|
- MONGO_URL=mongodb://admin:password123@mongodb:27017/energy_dashboard?authSource=admin
|
|
- REDIS_URL=redis://redis:6379
|
|
- TOKEN_SERVICE_URL=http://token-service:8001
|
|
- SENSOR_SERVICE_URL=http://sensor-service:8007
|
|
- BATTERY_SERVICE_URL=http://battery-service:8002
|
|
- DEMAND_RESPONSE_SERVICE_URL=http://demand-response-service:8003
|
|
- P2P_TRADING_SERVICE_URL=http://p2p-trading-service:8004
|
|
- FORECASTING_SERVICE_URL=http://forecasting-service:8005
|
|
- IOT_CONTROL_SERVICE_URL=http://iot-control-service:8006
|
|
- DATA_INGESTION_SERVICE_URL=http://data-ingestion-service:8008
|
|
depends_on:
|
|
- mongodb
|
|
- redis
|
|
- token-service
|
|
- sensor-service
|
|
- data-ingestion-service
|
|
# - battery-service
|
|
# - demand-response-service
|
|
networks:
|
|
- energy-network
|
|
|
|
# Token Management Service
|
|
token-service:
|
|
build:
|
|
context: ./token-service
|
|
dockerfile: Dockerfile
|
|
container_name: token-service
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8001:8001"
|
|
environment:
|
|
- MONGO_URL=mongodb://admin:password123@mongodb:27017/energy_dashboard_tokens?authSource=admin
|
|
- JWT_SECRET_KEY=your-super-secret-jwt-key-change-in-production
|
|
depends_on:
|
|
- mongodb
|
|
networks:
|
|
- energy-network
|
|
|
|
# Battery Management Service
|
|
# battery-service:
|
|
# build:
|
|
# context: ./battery-service
|
|
# dockerfile: Dockerfile
|
|
# container_name: battery-service
|
|
# restart: unless-stopped
|
|
# ports:
|
|
# - "8002:8002"
|
|
# environment:
|
|
# - MONGO_URL=mongodb://admin:password123@mongodb:27017/energy_dashboard_batteries?authSource=admin
|
|
# - REDIS_URL=redis://redis:6379
|
|
# depends_on:
|
|
# - mongodb
|
|
# - redis
|
|
# networks:
|
|
# - energy-network
|
|
|
|
# Demand Response Service
|
|
# demand-response-service:
|
|
# build:
|
|
# context: ./demand-response-service
|
|
# dockerfile: Dockerfile
|
|
# container_name: demand-response-service
|
|
# restart: unless-stopped
|
|
# ports:
|
|
# - "8003:8003"
|
|
# environment:
|
|
# - MONGO_URL=mongodb://admin:password123@mongodb:27017/energy_dashboard_demand_response?authSource=admin
|
|
# - REDIS_URL=redis://redis:6379
|
|
# - IOT_CONTROL_SERVICE_URL=http://iot-control-service:8006
|
|
# depends_on:
|
|
# - mongodb
|
|
# - redis
|
|
# networks:
|
|
# - energy-network
|
|
|
|
# P2P Trading Service
|
|
# p2p-trading-service:
|
|
# build:
|
|
# context: ./p2p-trading-service
|
|
# dockerfile: Dockerfile
|
|
# container_name: p2p-trading-service
|
|
# restart: unless-stopped
|
|
# ports:
|
|
# - "8004:8004"
|
|
# environment:
|
|
# - MONGO_URL=mongodb://admin:password123@mongodb:27017/energy_dashboard_p2p?authSource=admin
|
|
# - REDIS_URL=redis://redis:6379
|
|
# depends_on:
|
|
# - mongodb
|
|
# - redis
|
|
# networks:
|
|
# - energy-network
|
|
|
|
# Forecasting Service
|
|
# forecasting-service:
|
|
# build:
|
|
# context: ./forecasting-service
|
|
# dockerfile: Dockerfile
|
|
# container_name: forecasting-service
|
|
# restart: unless-stopped
|
|
# ports:
|
|
# - "8005:8005"
|
|
# environment:
|
|
# - MONGO_URL=mongodb://admin:password123@mongodb:27017/energy_dashboard_forecasting?authSource=admin
|
|
# - REDIS_URL=redis://redis:6379
|
|
# depends_on:
|
|
# - mongodb
|
|
# - redis
|
|
# networks:
|
|
# - energy-network
|
|
|
|
# IoT Control Service
|
|
# iot-control-service:
|
|
# build:
|
|
# context: ./iot-control-service
|
|
# dockerfile: Dockerfile
|
|
# container_name: iot-control-service
|
|
# restart: unless-stopped
|
|
# ports:
|
|
# - "8006:8006"
|
|
# environment:
|
|
# - MONGO_URL=mongodb://admin:password123@mongodb:27017/energy_dashboard_iot?authSource=admin
|
|
# - REDIS_URL=redis://redis:6379
|
|
# - BATTERY_SERVICE_URL=http://battery-service:8002
|
|
# - DEMAND_RESPONSE_SERVICE_URL=http://demand-response-service:8003
|
|
# depends_on:
|
|
# - mongodb
|
|
# - redis
|
|
# networks:
|
|
# - energy-network
|
|
|
|
# Data Ingestion Service (FTP Monitoring & SA4CPS Integration)
|
|
data-ingestion-service:
|
|
build:
|
|
context: ./data-ingestion-service
|
|
dockerfile: Dockerfile
|
|
container_name: data-ingestion-service
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8008:8008"
|
|
environment:
|
|
- MONGO_URL=mongodb://admin:password123@mongodb:27017/
|
|
- FTP_SA4CPS_HOST=ftp.sa4cps.pt
|
|
- FTP_SA4CPS_PORT=21
|
|
- FTP_SA4CPS_USERNAME=curvascarga@sa4cps.pt
|
|
- FTP_SA4CPS_REMOTE_PATH=/SLGs/
|
|
- FTP_CHECK_INTERVAL=21600
|
|
- FTP_SKIP_INITIAL_SCAN=true
|
|
depends_on:
|
|
- mongodb
|
|
networks:
|
|
- energy-network
|
|
|
|
# Sensor Management Service (Original Dashboard Functionality)
|
|
sensor-service:
|
|
build:
|
|
context: ./sensor-service
|
|
dockerfile: Dockerfile
|
|
container_name: sensor-service
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8007:8007"
|
|
environment:
|
|
- MONGO_URL=mongodb://admin:password123@mongodb:27017/energy_dashboard_sensors?authSource=admin
|
|
- REDIS_URL=redis://redis:6379
|
|
# - TOKEN_SERVICE_URL=http://token-service:8001
|
|
depends_on:
|
|
- mongodb
|
|
- redis
|
|
networks:
|
|
- energy-network
|
|
|
|
# Monitoring and Management
|
|
nginx:
|
|
image: nginx:alpine
|
|
container_name: nginx
|
|
restart: unless-stopped
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
volumes:
|
|
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
|
|
- ./nginx/ssl:/etc/nginx/ssl
|
|
depends_on:
|
|
- api-gateway
|
|
networks:
|
|
- energy-network
|
|
|
|
networks:
|
|
energy-network:
|
|
driver: bridge
|
|
name: energy-network
|
|
|
|
volumes:
|
|
mongodb_data:
|
|
name: energy-mongodb-data
|
|
redis_data:
|
|
name: energy-redis-data
|