# Dockhand-managed compose — image-only (no build context on Dockhand host). # Source of truth for builds: /opt/atc-agents on VM304 (10.0.21.33). services: redis: image: redis:7-alpine restart: unless-stopped volumes: - redis_data:/data postgres: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: atc POSTGRES_PASSWORD: atc-agents-pg POSTGRES_DB: atc_agents volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U atc -d atc_agents"] interval: 5s timeout: 5s retries: 10 api: image: atc-agents-api:latest restart: unless-stopped environment: REDIS_URL: redis://redis:6379/0 DOCKHAND_URL: http://10.0.21.45:8082 DATABASE_URL: postgresql+psycopg2://atc:atc-agents-pg@postgres:5432/atc_agents SQLITE_FALLBACK_PATH: /data/atc-agents.db GPU_URL: http://10.0.20.106:9000 GPU_UI_URL: http://10.0.20.106:9000 LLM_URL: http://10.0.20.106:8001/v1 LLM_MODEL: qwen2.5-32b-gptq LLM_API_KEY: sk-local LAKEHOUSE_HOST: 10.0.21.50 AIRFLOW_URL: http://10.0.21.55:8080 KAFKA_UI_URL: http://10.0.21.36:9000 HDFS_NN_URL: http://10.0.21.61:9870 volumes: - api_data:/data depends_on: redis: condition: service_started postgres: condition: service_healthy ui: image: atc-agents-ui:latest restart: unless-stopped depends_on: - api caddy: image: caddy:2-alpine restart: unless-stopped ports: - "80:80" volumes: - ./caddy/Caddyfile:/etc/caddy/Caddyfile:ro depends_on: - ui - api volumes: redis_data: postgres_data: api_data: