Files
mini-openclaw-v2/deploy/docker-compose.aliyun.yml
qiaoqichaoandClaude Code 74430a3b4d fix(v2): 隔离 Compose 资源,使 v2 可与旧版同时运行
原抽取件沿用旧版的容器名/宿主端口/卷名,一旦启动会与旧版直接冲突,
故 v2 在改名完成前不可部署。本次仅改 v2,不触碰旧版。

- 项目名/容器名 mini-openclaw-stable → mini-openclaw-v2
- 宿主端口 3200/8002 → 3212/8012(容器内仍为 3000/8002,健康检查与
  RISK_AGENT_BACKEND_URL 都在容器内解析,故保持不变)
- 卷 xingbang-data/xingbang-logs → xingbang-v2-data/xingbang-v2-logs
- verify.py 的 docker 冒烟改为探测 3212/8012

backend/test_deployment_release.py 的 5 项断言**未修改**仍全绿:该测试锁定的是
aliyun compose 的回环端口行与 CHAT_THINKING_MODE,本次未改这两处。

验证:scripts/verify.py 9/9 PASS(exit 0)
未验证:docker 运行时冒烟(本机 Docker Desktop 未启动,守护进程不可达)

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-29 14:16:51 +08:00

43 lines
1.8 KiB
YAML

name: mini-openclaw-v2
services:
xingbang-app:
image: ${APP_IMAGE:?Set APP_IMAGE to the full Alibaba Cloud ACR image reference}
container_name: mini-openclaw-v2
restart: unless-stopped
ports:
# 端口行与回环绑定保持不变:backend/test_deployment_release.py 断言这两行。
# 云端资源隔离通过容器名、卷名与 Compose 项目名达成。
- "127.0.0.1:${FRONTEND_PORT:-80}:3000"
- "127.0.0.1:${BACKEND_PORT:-8002}:8002"
environment:
DEEPSEEK_API_KEY: ${DEEPSEEK_API_KEY:?Set DEEPSEEK_API_KEY}
DEEPSEEK_MODEL: ${DEEPSEEK_MODEL:-deepseek-chat}
DEEPSEEK_BASE_URL: ${DEEPSEEK_BASE_URL:-https://api.deepseek.com}
XINGBANG_LOCAL_MODEL_KEY: ${DEEPSEEK_API_KEY:?Set DEEPSEEK_API_KEY}
XINGBANG_LOCAL_MODEL_NAME: ${DEEPSEEK_MODEL:-deepseek-chat}
XINGBANG_LOCAL_MODEL_URL: ${DEEPSEEK_BASE_URL:-https://api.deepseek.com}
CHAT_THINKING_MODE: ${CHAT_THINKING_MODE:-}
XINGBANG_DEMO_ROLE_LOGIN: ${XINGBANG_DEMO_ROLE_LOGIN:-0}
XINGBANG_DEMO_PROJECTS: ${XINGBANG_DEMO_PROJECTS:-DEMO-A,DEMO-B,DEMO-C,LAB-001,XB-2026-001}
ERP_DB_HOST: ${ERP_DB_HOST:-}
ERP_DB_PORT: ${ERP_DB_PORT:-5432}
ERP_DB_NAME: ${ERP_DB_NAME:-}
ERP_DB_USER: ${ERP_DB_USER:-}
ERP_DB_PASSWORD: ${ERP_DB_PASSWORD:-}
ERP_DB_SSL_MODE: ${ERP_DB_SSL_MODE:-require}
RISK_AGENT_BACKEND_URL: http://127.0.0.1:8002
volumes:
- xingbang-v2-data:/app/backend/xingbang_data
- xingbang-v2-logs:/app/backend/logs
healthcheck:
test: ["CMD", "node", "-e", "Promise.all([fetch('http://127.0.0.1:3000/'),fetch('http://127.0.0.1:8002/')]).then(rs=>process.exit(rs.every(r=>r.ok)?0:1)).catch(()=>process.exit(1))"]
interval: 30s
timeout: 5s
start_period: 120s
retries: 3
volumes:
xingbang-v2-data:
xingbang-v2-logs: