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>
This commit is contained in:
@@ -1,9 +1,13 @@
|
||||
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
|
||||
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:
|
||||
@@ -24,8 +28,8 @@ services:
|
||||
ERP_DB_SSL_MODE: ${ERP_DB_SSL_MODE:-require}
|
||||
RISK_AGENT_BACKEND_URL: http://127.0.0.1:8002
|
||||
volumes:
|
||||
- xingbang-data:/app/backend/xingbang_data
|
||||
- xingbang-logs:/app/backend/logs
|
||||
- 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
|
||||
@@ -34,5 +38,5 @@ services:
|
||||
retries: 3
|
||||
|
||||
volumes:
|
||||
xingbang-data:
|
||||
xingbang-logs:
|
||||
xingbang-v2-data:
|
||||
xingbang-v2-logs:
|
||||
|
||||
+12
-7
@@ -1,12 +1,16 @@
|
||||
name: mini-openclaw-v2
|
||||
|
||||
services:
|
||||
xingbang-app:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
container_name: mini-openclaw-stable
|
||||
container_name: mini-openclaw-v2
|
||||
ports:
|
||||
- "3200:3000" # frontend
|
||||
- "8002:8002" # backend API used by the browser client
|
||||
# 宿主端口与旧版(3200/8002)隔离,见 claude_use/T00/02 §2.2。
|
||||
# 容器内端口保持 3000/8002 不变:健康检查与 RISK_AGENT_BACKEND_URL 都在容器内解析。
|
||||
- "3212:3000" # frontend
|
||||
- "8012:8002" # backend API used by the browser client
|
||||
environment:
|
||||
DEEPSEEK_API_KEY: ${DEEPSEEK_API_KEY:-}
|
||||
DEEPSEEK_MODEL: ${DEEPSEEK_MODEL:-deepseek-chat}
|
||||
@@ -20,10 +24,11 @@ services:
|
||||
ERP_DB_USER: ${ERP_DB_USER:-}
|
||||
ERP_DB_PASSWORD: ${ERP_DB_PASSWORD:-}
|
||||
ERP_DB_SSL_MODE: ${ERP_DB_SSL_MODE:-require}
|
||||
# 容器内后端监听 8002,故此处保持 8002(不是宿主端口 8012)
|
||||
RISK_AGENT_BACKEND_URL: ${RISK_AGENT_BACKEND_URL:-http://127.0.0.1:8002}
|
||||
volumes:
|
||||
- xingbang-data:/app/backend/xingbang_data
|
||||
- xingbang-logs:/app/backend/logs
|
||||
- xingbang-v2-data:/app/backend/xingbang_data
|
||||
- xingbang-v2-logs:/app/backend/logs
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test:
|
||||
@@ -37,5 +42,5 @@ services:
|
||||
retries: 3
|
||||
|
||||
volumes:
|
||||
xingbang-data:
|
||||
xingbang-logs:
|
||||
xingbang-v2-data:
|
||||
xingbang-v2-logs:
|
||||
|
||||
+2
-2
@@ -118,8 +118,8 @@ def docker_smoke(docker: str, evidence_dir: Path, keep: bool) -> dict:
|
||||
output.append(f"$ {' '.join(compose + args)}\n{result.stdout}")
|
||||
if result.returncode:
|
||||
raise RuntimeError(f"Docker Compose {' '.join(args)} failed with {result.returncode}")
|
||||
wait_for("http://127.0.0.1:3200/")
|
||||
wait_for("http://127.0.0.1:8002/api/xingbang/health")
|
||||
wait_for("http://127.0.0.1:3212/")
|
||||
wait_for("http://127.0.0.1:8012/api/xingbang/health")
|
||||
output.append("HTTP smoke checks passed for frontend and backend")
|
||||
except Exception as exc:
|
||||
status, exit_code = "failed", 1
|
||||
|
||||
Reference in New Issue
Block a user