# 部署常见问题排查 排障第一步:先看**完整安装日志**(Shell 部署时脚本在开头与 summary box 里都打印了路径): ```bash ls -lt /tmp/jeepay-install-*.log | head -1 less $(ls -t /tmp/jeepay-install-*.log | head -1) ``` ## 登录页验证码不出 / 任何 DB 操作报错 99% 是 manager 连不上 MySQL 或 Redis。按下面顺序排查: ```bash # 1) 三个应用是否 healthy for c in jeepaymanager jeepaymerchant jeepaypayment; do echo -n "$c: "; docker inspect --format '{{.State.Health.Status}}' $c done # 2) manager 实际挂载的 application.yml docker exec jeepaymanager grep -nE "url:|host:|password:" /jeepayhomes/service/app/application.yml # 3) 从 manager 容器内验证 DB / Redis 连通 docker exec jeepaymanager getent hosts mysql redis docker exec jeepaymanager sh -c "timeout 3 bash -c ':` 把 host 不存在的 path 自动建成目录: ```bash docker stop jeepaymanager jeepaymerchant jeepaypayment rm -rf $rootDir/service/configs bash uninstall.sh # 或手工重跑 install.sh 的 [6] 步骤 ``` V3.2.8+ 的 `install.sh` 每个 `cp` 都加了返回值 + 文件类型校验,失败会 `exit 1` 明确指引,不再留半成品。 ## Apple Silicon(M1/M2/M3) RocketMQ 官方镜像只发布 `linux/amd64`,在 Apple Silicon 上通过 Rosetta 2 模拟运行,启动略慢属正常。Docker Desktop → Settings → 开启 **Use Rosetta for x86_64/amd64 emulation**。 ## 镜像拉取失败(403 / 超时) 默认 SWR 镜像偶尔有地区限制,先确认: ```bash docker pull swr.cn-south-1.myhuaweicloud.com/jeepay/mysql:8.0.25 ``` 如持续失败,可临时回 Docker Hub 上游(安装前 export): ```bash export mysqlImage=mysql:8.0.25 export redisImage=redis:6.2.14 export rocketmqImage=apache/rocketmq:5.3.1 export nginxImage=nginx:1.18.0 export managerImage=jeepay/jeepay-manager:3.2.0 export merchantImage=jeepay/jeepay-merchant:3.2.0 export paymentImage=jeepay/jeepay-payment:3.2.0 bash install.sh ``` ## 前端镜像构建失败(Docker Compose 场景) - `jeepay-ui` 目录是否存在且在 `jeepay` 同级? - `UI_BASE_DIR` 是否正确? - npm 源是否可达?必要时在 `jeepay-ui` 的 Dockerfile 里切淘宝源。 ## 打包排障现场给维护者 ```bash ts=$(date +%Y%m%d-%H%M%S) out=/tmp/jeepay-debug-$ts mkdir -p $out docker ps -a > $out/docker-ps.txt for c in mysql8 redis6 rocketmq-namesrv rocketmq-broker jeepaymanager jeepaymerchant jeepaypayment nginx118; do docker logs --tail 200 $c > $out/log-$c.txt 2>&1 docker inspect $c > $out/inspect-$c.json 2>&1 done docker network inspect jeepay-net > $out/network.json 2>&1 cp $(ls -t /tmp/jeepay-install-*.log | head -1) $out/install.log 2>/dev/null tar -czf $out.tar.gz -C /tmp "$(basename $out)" echo "已打包到:$out.tar.gz" ``` 把 `.tar.gz` 发维护者,能直接定位。