version: '3.8' services: mev-bot: build: context: . dockerfile: Dockerfile image: mev-bot:latest container_name: mev-bot-production restart: always volumes: # Mount logs directory for persistent logs - ./logs:/app/logs # Mount data directory for database - ./data:/app/data # Mount development config (simpler, no YAML parsing issues) - ./config/config.dev.yaml:/app/config/config.yaml:ro environment: - LOG_LEVEL=${LOG_LEVEL:-info} - ARBITRUM_RPC_ENDPOINT=${ARBITRUM_RPC_ENDPOINT:-https://arbitrum-rpc.publicnode.com} # Add any other environment variables from .env file env_file: - .env ports: - "${PORT:-8080}:8080" - "${METRICS_PORT:-9090}:9090" command: ["start"] # Health check to ensure the bot is running properly healthcheck: test: ["CMD-SHELL", "pgrep -f mev-bot || exit 1"] interval: 30s timeout: 10s retries: 3 start_period: 40s # Security options security_opt: - no-new-privileges:true # Resource limits (adjust as needed) deploy: resources: limits: cpus: '2' memory: 2G reservations: cpus: '0.5' memory: 512M