From 5b08bcfc7c407d957bdfab4a79d74f7b99863d54 Mon Sep 17 00:00:00 2001 From: wangliang Date: Fri, 23 Oct 2026 11:25:53 +0800 Subject: [PATCH] =?UTF-8?q?refactor(rpc):=20bridge=20=E6=8E=A5=E5=85=A5=20?= =?UTF-8?q?spug-net=20=E7=9B=B4=E8=BF=9E=20wangliang-dev:950x=EF=BC=8C?= =?UTF-8?q?=E5=8E=BB=E6=8E=89=E5=AF=B9=E5=AE=BF=E4=B8=BB=20socat=20?= =?UTF-8?q?=E7=9A=84=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 6 ++++++ docs/deploy-wangliang.md | 17 ++++++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 7661c52..ff60ed3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -228,6 +228,9 @@ services: condition: service_healthy redis: condition: service_healthy + networks: + - default + - spug-net healthcheck: test: ["CMD", "wget", "-q", "-O", "-", "http://127.0.0.1:4100/healthz"] interval: 10s @@ -237,6 +240,9 @@ services: networks: default: name: crm-new_default + # 与本工作区的 wangliang-dev 同网络,bridge 可直接按容器名调用 9503/9505/9506/9509 + spug-net: + external: true volumes: pg-data: diff --git a/docs/deploy-wangliang.md b/docs/deploy-wangliang.md index 2034f94..85744ba 100644 --- a/docs/deploy-wangliang.md +++ b/docs/deploy-wangliang.md @@ -45,16 +45,19 @@ grep '^TOOLS_SHARED_KEY=' .env # bridge 工具密钥 | `LIBREDESK_IMAGE` | `libredesk/libredesk:v2.9.0-rc.10` | `libredesk/libredesk:v2.9.0-rc.10-**arm64**` | 宿主是 ARM64,`v2.9.0-rc.10` 只有 amd64;官方另发了 `-arm64` 同版本 tag,实测原生 `linux/arm64` 运行 | | `LIBREDESK_BASE_URL` | `http://localhost:9000` | `https://wangliang-crm.dev.gaia888.com` | 走宿主 nginx 的 HTTPS | | `TWENTY_SERVER_URL` | `http://192.168.31.61:3100` | `https://wangliang-twenty.dev.gaia888.com` | 前端 `REACT_APP_SERVER_BASE_URL` 用的就是它(已核对页面内联配置) | -| `RECOMMEND_URL` | 测试服地址 | `jsonrpc://host.docker.internal:24503` | 用 **本工作区** 的 product-service(宿主 socat 24503 → 容器 9503) | -| `ORDER_API_URL` | 测试服地址 | `jsonrpc://host.docker.internal:24505` | trading-service(24505 → 9505) | -| `INVENTORY_API_URL` | 测试服地址 | `jsonrpc://host.docker.internal:24509` | eta-service(24509 → 9509) | -| `MEMBER_RPC_URL` | 测试服地址 | `jsonrpc://host.docker.internal:24506` | member-service(24506 → 9506) | +| `RECOMMEND_URL` | 测试服地址 | `jsonrpc://wangliang-dev:9503` | 用 **本工作区** 的 product-service | +| `ORDER_API_URL` | 测试服地址 | `jsonrpc://wangliang-dev:9505` | trading-service | +| `INVENTORY_API_URL` | 测试服地址 | `jsonrpc://wangliang-dev:9509` | eta-service | +| `MEMBER_RPC_URL` | 测试服地址 | `jsonrpc://wangliang-dev:9506` | member-service | | `IDENTITY_DEV_MODE` | `false` | `true` | dev 环境方便 widget 联调;**上生产前改回 `false`** | | `PRODUCT_TIMEOUT_MS` | 未透传(bridge 默认 15s) | `30000`(compose 增加透传) | 冷门长查询会偶发 >15s,超时会降级成无价格的站点地图结果,模型易编价 | | `public-gateway` / `cloudflared` | compose 里默认启动 | **未启动** | 已有宿主 nginx 直出 HTTPS,不需要 Cloudflare 临时隧道 | +| bridge 网络 | 只挂 `crm-new_default` | 额外接入 `spug-net` | 直连 `wangliang-dev:9503/9505/9506/9509`,去掉对宿主 socat 转发的依赖 | -`host.docker.internal` 由 compose 的 `extra_hosts` 注入,指向宿主;`24503-24509` 是本工作区的 RPC 宿主转发端口 -(见 `conf/dev/rpc-forward.sh`,cron 每分钟自愈)。 +RPC 走 **容器网络直连**:compose 把 `bridge` 同时接入外部网络 `spug-net`(与 `wangliang-dev` 同网络), +直接按容器名解析到 `wangliang-dev`,不再依赖宿主 `socat` 24503-24509 转发。容器重建后 DNS 名不变, +比 socat 需要按 IP 重建更稳。宿主侧的 `conf/dev/rpc-forward.sh` 仍保留(供宿主/不在 spug-net 的容器使用), +但本栈已不依赖它。 ## 4. 已完成初始化 @@ -79,7 +82,7 @@ grep '^TOOLS_SHARED_KEY=' .env # bridge 工具密钥 ### bridge - `/healthz` 正常,10 个工具就绪。 - 实测 `search_products` 直接命中**本工作区真实商品数据**(如 `Stainless Steel Y-Chain Necklace` / `$6.73` / - `product_id=11079`),说明 `host.docker.internal:24503` 的 JSONRPC 链路是通的。 + `product_id=11079`),说明 `wangliang-dev:9503` 的 JSONRPC 直连链路是通的(工具调用 925ms,source=catalog)。 - `search_orders` 未验证身份时按设计返回 `verification_required`。 ## 5. 运维命令