version: '3.8' services: # Production trading system trading-system: build: . container_name: algorithmic-trading-prod ports: - "8000:8000" volumes: - trading_data:/app/data - trading_logs:/app/logs - trading_models:/app/models - ./config.yaml:/app/config.yaml:ro environment: - PYTHONPATH=/app - LOG_LEVEL=INFO - PYTHONUNBUFFERED=1 command: ["python", "-m", "agentic_ai_system.main", "--mode", "live"] restart: unless-stopped healthcheck: test: ["CMD", "python", "-c", "import sys; sys.exit(0)"] interval: 30s timeout: 10s retries: 3 start_period: 40s deploy: resources: limits: memory: 2G cpus: '1.0' reservations: memory: 512M cpus: '0.5' logging: driver: "json-file" options: max-size: "10m" max-file: "3" # Monitoring service monitoring: image: prom/prometheus:latest container_name: trading-monitoring ports: - "9090:9090" volumes: - ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml:ro - prometheus_data:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--web.console.libraries=/etc/prometheus/console_libraries' - '--web.console.templates=/etc/prometheus/consoles' - '--storage.tsdb.retention.time=200h' - '--web.enable-lifecycle' restart: unless-stopped # Grafana for visualization grafana: image: grafana/grafana:latest container_name: trading-grafana ports: - "3000:3000" volumes: - grafana_data:/var/lib/grafana - ./monitoring/grafana/dashboards:/etc/grafana/provisioning/dashboards:ro - ./monitoring/grafana/datasources:/etc/grafana/provisioning/datasources:ro environment: - GF_SECURITY_ADMIN_PASSWORD=admin - GF_USERS_ALLOW_SIGN_UP=false restart: unless-stopped depends_on: - monitoring # Backup service backup: build: . container_name: trading-backup volumes: - trading_data:/app/data:ro - trading_logs:/app/logs:ro - trading_models:/app/models:ro - backup_data:/backup environment: - PYTHONPATH=/app command: ["python", "-c", "import shutil; import os; from datetime import datetime; timestamp = datetime.now().strftime('%Y%m%d_%H%M%S'); shutil.make_archive(f'/backup/trading_backup_{timestamp}', 'zip', '/app/data'); shutil.make_archive(f'/backup/models_backup_{timestamp}', 'zip', '/app/models'); print('Backup completed')"] restart: "no" volumes: trading_data: driver: local trading_logs: driver: local trading_models: driver: local prometheus_data: driver: local grafana_data: driver: local backup_data: driver: local