services: genesis: build: context: . dockerfile: Dockerfile container_name: genesis restart: unless-stopped # ── Mount source code + config ────────────────────────────────────────── # Code changes only need: docker compose restart # Dependency changes need: docker compose up -d --build volumes: - ./core:/opt/hermes-agent/core - ./strategies:/opt/hermes-agent/strategies - ./configs:/opt/hermes-agent/configs - ./backtest:/opt/hermes-agent/backtest - ./.env:/opt/hermes-agent/.env:ro - genesis_logs:/var/log/hermes - genesis_strategy_logs:/var/log - genesis_cache:/tmp # ── Environment overrides (optional) ──────────────────────────────────── environment: - TZ=UTC - GENESIS_MODE=live # Set to "analyze" to disable execution # ── Health check — confirms Mt5Bridge is reachable ────────────────────── healthcheck: test: ["CMD", "python3", "-c", "import os,requests; r=requests.get(os.getenv('MT5_BRIDGE_URL','http://localhost:13485')+'/health',headers={'X-API-Key':os.getenv('MT5_BRIDGE_KEY','')},timeout=5); exit(0 if r.status_code==200 else 1)"] interval: 60s timeout: 10s retries: 3 start_period: 30s # ── Resource limits ────────────────────────────────────────────────────── mem_limit: 512m cpus: "0.5" logging: driver: "json-file" options: max-size: "10m" max-file: "3" volumes: genesis_logs: genesis_strategy_logs: genesis_cache: