chore: CRM-NEW baseline
This commit is contained in:
Executable
+74
@@ -0,0 +1,74 @@
|
||||
#!/usr/bin/env bash
|
||||
# 测试服 JSON-RPC 端口外网被封:在本机建 SSH 隧道,供 crm-new 的 bridge 访问。
|
||||
#
|
||||
# 默认只启动隧道并打印 .env 需要的 4 行配置;
|
||||
# 加 --apply 会自动更新 .env 里的 RPC URL 并重建 bridge。
|
||||
set -euo pipefail
|
||||
cd "$(dirname "${BASH_SOURCE[0]}")/.."
|
||||
|
||||
APPLY=0
|
||||
[[ "${1:-}" == "--apply" ]] && APPLY=1
|
||||
|
||||
NET=$(docker network ls --format '{{.Name}}' | grep -E '^crm-new.*_default$' | head -1 || true)
|
||||
if [[ -z "$NET" ]]; then
|
||||
echo "找不到 crm-new 的 compose 网络,请先启动 stack(docker compose up -d)" >&2
|
||||
exit 1
|
||||
fi
|
||||
GW=$(docker network inspect "$NET" -f '{{range .IPAM.Config}}{{.Gateway}}{{end}}')
|
||||
PORTS=(24503 24505 24506 24509)
|
||||
|
||||
ARGS=()
|
||||
for p in "${PORTS[@]}"; do
|
||||
if ss -ltn "sport = :$p" 2>/dev/null | grep -q "$GW"; then
|
||||
echo "端口 $p 已在 $GW 监听,跳过"
|
||||
else
|
||||
ARGS+=("-L" "$GW:$p:127.0.0.1:$p")
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ ${#ARGS[@]} -gt 0 ]]; then
|
||||
ssh -F ~/.ssh/config -fN \
|
||||
-o ExitOnForwardFailure=yes \
|
||||
-o ServerAliveInterval=30 \
|
||||
-o ServerAliveCountMax=3 \
|
||||
"${ARGS[@]}" yw-dev
|
||||
echo "隧道已建立:$GW -> yw-dev 127.0.0.1"
|
||||
fi
|
||||
|
||||
cat <<EOF
|
||||
|
||||
bridge 需要以下配置(当前网关 $GW):
|
||||
RECOMMEND_URL=jsonrpc://$GW:24503
|
||||
ORDER_API_URL=jsonrpc://$GW:24505
|
||||
MEMBER_RPC_URL=jsonrpc://$GW:24506
|
||||
INVENTORY_API_URL=jsonrpc://$GW:24509
|
||||
EOF
|
||||
|
||||
if [[ $APPLY -eq 1 ]]; then
|
||||
python3 - "$GW" <<'PY'
|
||||
import pathlib, sys
|
||||
gw = sys.argv[1]
|
||||
p = pathlib.Path('.env')
|
||||
lines = p.read_text().split('\n')
|
||||
mapping = {
|
||||
'RECOMMEND_URL': f'jsonrpc://{gw}:24503',
|
||||
'ORDER_API_URL': f'jsonrpc://{gw}:24505',
|
||||
'MEMBER_RPC_URL': f'jsonrpc://{gw}:24506',
|
||||
'INVENTORY_API_URL': f'jsonrpc://{gw}:24509',
|
||||
}
|
||||
for k, v in mapping.items():
|
||||
for i, line in enumerate(lines):
|
||||
if line.startswith(k + '='):
|
||||
lines[i] = f'{k}={v}'
|
||||
break
|
||||
else:
|
||||
lines.append(f'{k}={v}')
|
||||
p.write_text('\n'.join(lines))
|
||||
print('已更新 .env')
|
||||
PY
|
||||
docker compose up -d --force-recreate bridge
|
||||
echo "已重建 bridge"
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "注意:网络重建/机器重启后网关 IP 可能变化,重跑本脚本即可。"
|
||||
Reference in New Issue
Block a user