diff --git a/deploy/docker-compose.aliyun.yml b/deploy/docker-compose.aliyun.yml index b8f4076..f39daf7 100644 --- a/deploy/docker-compose.aliyun.yml +++ b/deploy/docker-compose.aliyun.yml @@ -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: diff --git a/docker-compose.yml b/docker-compose.yml index 725b90f..ad3ce76 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -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: diff --git a/scripts/verify.py b/scripts/verify.py index 4f3770f..8b46015 100644 --- a/scripts/verify.py +++ b/scripts/verify.py @@ -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