原抽取件沿用旧版的容器名/宿主端口/卷名,一旦启动会与旧版直接冲突, 故 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>
43 lines
1.8 KiB
YAML
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:
|