# Docker Compose for Foxhunt HFT Trading System - Monolithic Architecture # Only databases and monitoring - the monolithic app runs on the host version: '3.8' networks: foxhunt-network: driver: bridge volumes: postgres-data: redis-data: influxdb-data: prometheus-data: services: # PostgreSQL - Main database for trades, orders, positions postgres: image: postgres:15-alpine container_name: foxhunt-postgres networks: - foxhunt-network ports: - "${POSTGRES_PORT:-5432}:5432" volumes: - postgres-data:/var/lib/postgresql/data - ../migrations:/docker-entrypoint-initdb.d:ro environment: POSTGRES_DB: ${POSTGRES_DB:-foxhunt} POSTGRES_USER: ${POSTGRES_USER:-foxhunt} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD required} healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-foxhunt}"] interval: 10s timeout: 5s retries: 5 # Redis - Cache and pub/sub for real-time data redis: image: redis:7-alpine container_name: foxhunt-redis networks: - foxhunt-network ports: - "${REDIS_PORT:-6379}:6379" volumes: - redis-data:/data command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD:?REDIS_PASSWORD required} healthcheck: test: ["CMD", "redis-cli", "--no-auth-warning", "-a", "${REDIS_PASSWORD}", "ping"] interval: 10s timeout: 3s retries: 3 # InfluxDB - Time-series database for market data influxdb: image: influxdb:2.7-alpine container_name: foxhunt-influxdb networks: - foxhunt-network ports: - "${INFLUXDB_PORT:-8086}:8086" volumes: - influxdb-data:/var/lib/influxdb2 environment: DOCKER_INFLUXDB_INIT_MODE: setup DOCKER_INFLUXDB_INIT_USERNAME: ${INFLUXDB_USER:-admin} DOCKER_INFLUXDB_INIT_PASSWORD: ${INFLUXDB_PASSWORD:?INFLUXDB_PASSWORD required} DOCKER_INFLUXDB_INIT_ORG: ${INFLUXDB_ORG:-foxhunt} DOCKER_INFLUXDB_INIT_BUCKET: ${INFLUXDB_BUCKET:-market_data} DOCKER_INFLUXDB_INIT_ADMIN_TOKEN: ${INFLUXDB_TOKEN:?INFLUXDB_TOKEN required} healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8086/ping"] interval: 10s timeout: 5s retries: 3 # Prometheus - Metrics collection and monitoring prometheus: image: prom/prometheus:v2.45.0 container_name: foxhunt-prometheus networks: - foxhunt-network ports: - "${PROMETHEUS_PORT:-9090}:9090" volumes: - prometheus-data:/prometheus - ../config/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--web.console.libraries=/usr/share/prometheus/console_libraries' - '--web.console.templates=/usr/share/prometheus/consoles' - '--web.enable-lifecycle' healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:9090/-/ready"] interval: 10s timeout: 5s retries: 3