services: agent: build: . ports: - "8000:8000" environment: AZDO_ORGANIZATION: ${AZDO_ORGANIZATION} AZDO_PROJECT: ${AZDO_PROJECT} AZDO_PAT: ${AZDO_PAT} ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-unused} POSTGRES_DSN: postgresql://agent:${POSTGRES_PASSWORD:?POSTGRES_PASSWORD must be set}@db:5432/agent JIRA_EMAIL: ${JIRA_EMAIL} JIRA_API_TOKEN: ${JIRA_API_TOKEN} SLACK_WEBHOOK_URL: ${SLACK_WEBHOOK_URL} WEBHOOK_SECRET: ${WEBHOOK_SECRET:?WEBHOOK_SECRET must be set} JIRA_BASE_URL: ${JIRA_BASE_URL:-https://billolife.atlassian.net} CLAUDE_REVIEW_MODEL: ${CLAUDE_REVIEW_MODEL:-claude-sonnet-4-20250514} REPOS_BASE_DIR: ${REPOS_BASE_DIR:-} OPERATOR_TOKEN: ${OPERATOR_TOKEN:-} PORT: 8000 depends_on: db: condition: service_healthy restart: unless-stopped healthcheck: test: ["CMD-SHELL", "curl -sf http://localhost:8000/status || exit 1"] interval: 10s timeout: 5s retries: 3 start_period: 15s db: image: postgres:16-alpine environment: POSTGRES_USER: agent POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD must be set} POSTGRES_DB: agent ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U agent -d agent"] interval: 5s timeout: 5s retries: 5 restart: unless-stopped volumes: postgres_data: