# ============================================================================= # 主分支/生产环境编排 (Main Branch Production Environment) # 特性: # 1. 独占系统业务库 (5435:5432) 与专属高稳定性数据卷 # 2. 独占生产对话记录、工作区及审计日志目录 (./data/main) # 3. 共享连接知识库服务 (shuimu-kb-shared:5432) # ============================================================================= name: agent-main services: system-db: image: postgres:16-alpine container_name: shuimu-system-pg-main command: ["postgres", "-c", "shared_buffers=512MB", "-c", "max_connections=300"] environment: POSTGRES_USER: ${SYSTEM_DB_USER:-app} POSTGRES_PASSWORD: ${SYSTEM_DB_PASSWORD:-prod_highly_secure_db_pass} POSTGRES_DB: ${SYSTEM_DB_NAME:-agent_system_main} ports: - "127.0.0.1:${SYSTEM_DB_PUBLISH_PORT:-5435}:5432" volumes: - main-system-pgdata:/var/lib/postgresql/data - ./deploy/postgres/system_init.sql:/docker-entrypoint-initdb.d/01-init.sql:ro healthcheck: test: ["CMD-SHELL", "pg_isready -U ${SYSTEM_DB_USER:-app} -d ${SYSTEM_DB_NAME:-agent_system_main}"] interval: 5s timeout: 5s retries: 20 restart: always networks: - main-net cursor-agent: image: alpine:latest container_name: shuimu-cursor-agent-main command: ["sh", "-c", "echo 'Main/Prod Agent Runner is running' && sleep infinity"] environment: CURSOR_RUNNER_ADDR: ":18767" DATA_DIR: /app/data/workspaces ports: - "127.0.0.1:${CURSOR_RUNNER_PORT:-18767}:18767" volumes: - ./data/main/workspaces:/app/data/workspaces restart: always networks: - main-net app: image: alpine:latest container_name: shuimu-agent-app-main command: ["sh", "-c", "echo 'Main/Prod Agent App service is running on :8000' && sleep infinity"] depends_on: system-db: condition: service_healthy environment: ENV: prod HTTP_ADDR: ":${HTTP_PORT:-8000}" DATA_DIR: /app/data # 独占生产业务与对话库 APP_DB_DSN: postgres://${SYSTEM_DB_USER:-app}:${SYSTEM_DB_PASSWORD:-prod_highly_secure_db_pass}@system-db:5432/${SYSTEM_DB_NAME:-agent_system_main}?sslmode=disable # 共享知识库 POSTGRES_SHARED_KB_DSN: postgres://${KB_DB_USER:-regkb}:${KB_DB_PASSWORD:-shared_kb_secret_pass}@shuimu-kb-shared:5432/${KB_DB_NAME:-regulations}?sslmode=disable CURSOR_RUNNER_URL: http://cursor-agent:18767 AUX_FILE_DSN: file:/var/lib/feishu/outbox_main.db?_journal_mode=WAL&_busy_timeout=5000 ports: - "${APP_PUBLISH_HOST:-0.0.0.0}:${HTTP_PORT:-8000}:${HTTP_PORT:-8000}" volumes: # 独占生产对话记录与环境数据 - ./data/main:/app/data - main-aux-sqlite-data:/var/lib/feishu restart: always networks: - main-net - shared-net networks: main-net: name: chat-agent-main-net driver: bridge shared-net: name: chat-agent-shared-net external: true volumes: main-system-pgdata: name: agent-main-system-pgdata main-aux-sqlite-data: name: agent-main-aux-sqlite-data