name: eryao-prod x-backend-common: &backend-common image: ${ERYAO_BACKEND_IMAGE:-${AWS_ACCOUNT_ID:?AWS_ACCOUNT_ID is required}.dkr.ecr.${AWS_REGION:?AWS_REGION is required}.amazonaws.com/${ECR_REPOSITORY:?ECR_REPOSITORY is required}:latest} env_file: - path: ./.env required: true depends_on: redis: condition: service_healthy restart: unless-stopped services: backend: <<: *backend-common container_name: eryao-prod-backend environment: ERYAO_RUNTIME__ENVIRONMENT: prod ERYAO_RUNTIME__SERVICE_NAME: web ERYAO_REDIS__HOST: redis ERYAO_REDIS__PORT: 6379 ports: - "${ERYAO_DEPLOY_BIND_HOST:-127.0.0.1}:${ERYAO_WEB__PORT:-5775}:${ERYAO_WEB__PORT:-5775}" worker-agent: <<: *backend-common container_name: eryao-prod-worker-agent profiles: ["workers"] environment: ERYAO_RUNTIME__ENVIRONMENT: prod ERYAO_RUNTIME__SERVICE_NAME: worker-agent ERYAO_REDIS__HOST: redis ERYAO_REDIS__PORT: 6379 command: - sh - -c - exec taskiq worker core.taskiq.app:worker_agent_broker core.agentscope.runtime.tasks v1.feedback.tasks --workers ${ERYAO_WORKER__GROUPS__AGENT__CONCURRENCY:-2} redis: image: redis:7.4.2-alpine container_name: eryao-prod-redis env_file: - path: ./.env required: true environment: REDIS_PASSWORD: ${ERYAO_REDIS__PASSWORD:-} command: > sh -c 'if [ -n "$$REDIS_PASSWORD" ]; then redis-server --appendonly yes --requirepass "$$REDIS_PASSWORD"; else redis-server --appendonly yes; fi' volumes: - redis_data:/data healthcheck: test: [ "CMD", "sh", "-c", 'if [ -n "$$REDIS_PASSWORD" ]; then redis-cli -a "$$REDIS_PASSWORD" ping; else redis-cli ping; fi', ] interval: 5s timeout: 3s retries: 5 restart: unless-stopped volumes: redis_data: