mirror of
https://gitee.com/jeequan/jeepay.git
synced 2026-09-01 15:09:42 +08:00
fix(install): 修复 MySQL/Redis hostname 与密码错配,发布 V3.2.7
关键修复。此前 Shell 部署上来登录页验证码不出、任何 DB 操作失败, 原因是应用配置文件(conf/*/application.yml)沿用 Docker Compose 的 约定,但 Shell install.sh 启动容器用了 Compose 之外的名字: - hostname 错配:yml 里 jdbc:mysql://mysql:3306 / host: redis,而 install.sh 启动的容器叫 mysql8 / redis6,jeepay-net 内部 DNS 解析 "mysql" / "redis" 失败 → UnknownHostException。 - 密码错配:yml 里 password: rootroot(Compose 默认 root 密码), install.sh 用 config.sh 的 mysql_pwd(默认 jeepaydb123456)初始化 MySQL,两者不一致 → 连库 Access denied。 [8] 自检只 curl 了 HTTP 根路径,Spring Boot 懒加载 DB/Redis 连接, 所以 HTTP 200 但实际一用就报错。之前远端测试都没真请求 /vercode 这类 DB+Redis 通路,问题被遮蔽。 业务代码零改动,与 3.2.0 业务镜像完全兼容。 修复: - docker run mysql8 追加 --network-alias mysql; - docker run redis6 追加 --network-alias redis; - 复制 conf/* 到 service/configs/ 后,对三份 application.yml 执行 sed "s|password: rootroot|password: $mysql_pwd|" 统一替换 datasource 密码(Redis password 为空、activemq password="manager" 均不影响)。 - [8] 自检新增:curl 运营平台 /api/anon/auth/vercode。200 表示 MySQL + Redis 连通 OK;非 200 打印两种典型原因(alias / 密码)与排查命令。 - install.sh / shell.md / config.sh 默认 jeepayRef 升到 V3.2.7; version.md / upgrade.md 追加变更记录。 远端回归(Anolis OS,rootDir=/home/jeepay-v327): - 全流程 [1] - [7] 通过; - [8] 三个应用 healthy、三个 HTTP 端口 200/404/200/200; - [8] 新增的验证码接口返回 200,日志确认 "MySQL / Redis 连通正常"。
This commit is contained in:
@@ -209,7 +209,7 @@ cd $rootDir/sources/jeepay/docs/install && sh uninstall.sh
|
||||
|
||||
## 锁定源码版本
|
||||
|
||||
`install.sh` 默认 `jeepayRef=V3.2.6`,即 `git clone --branch V3.2.6 --depth 1`,和业务镜像(`3.2.0`,V3.2.6 与之完全兼容)锁在同一版本,避免业务镜像固定而源码继续漂移出现的"老镜像 + 新配置"混装问题。
|
||||
`install.sh` 默认 `jeepayRef=V3.2.7`,即 `git clone --branch V3.2.7 --depth 1`,和业务镜像(`3.2.0`,V3.2.7 与之完全兼容)锁在同一版本,避免业务镜像固定而源码继续漂移出现的"老镜像 + 新配置"混装问题。
|
||||
|
||||
如需临时改用最新 master 或其他 release tag,安装前导出环境变量即可:
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ mysql_pwd="jeepaydb123456"
|
||||
# 若使用自行构建的 arm64 RocketMQ 镜像,请同时覆盖 rocketmqImage 并将下行改为 linux/arm64:
|
||||
# rocketmqPlatform="linux/amd64"
|
||||
|
||||
# 源码 ref:install.sh 默认锁到 V3.2.6 release tag。如需切到其他 tag 或 master,
|
||||
# 源码 ref:install.sh 默认锁到 V3.2.7 release tag。如需切到其他 tag 或 master,
|
||||
# 取消以下注释并改为目标 ref;确保该 ref 下的 SQL / broker.conf.template / nginx.conf /
|
||||
# conf/* 与所选业务镜像版本兼容。
|
||||
# jeepayRef="master"
|
||||
|
||||
+27
-1
@@ -319,7 +319,7 @@ rocketmqPlatform=${rocketmqPlatform:-linux/amd64}
|
||||
# 源码 ref:默认锁到 V3.2.4 release tag,保证 git clone 下来的 SQL / broker.conf.template /
|
||||
# nginx.conf / conf/* 与业务镜像(3.2.0 / V3.2.4 兼容)契合,不受 master 后续演进影响。
|
||||
# 如需用最新 master 或其他 tag,安装前导出 jeepayRef=xxx 覆盖即可(透传给 git clone --branch)。
|
||||
jeepayRef=${jeepayRef:-V3.2.6}
|
||||
jeepayRef=${jeepayRef:-V3.2.7}
|
||||
|
||||
# 第2步:拉取项目源代码 || 拉取脚本文件
|
||||
echo "[2] 拉取项目源代码文件 (ref=$jeepayRef).... "
|
||||
@@ -364,6 +364,7 @@ cd $sourcesInstallPath && cp ./include/my.cnf $rootDir/mysql/config/my.cnf
|
||||
|
||||
# 镜像启动
|
||||
docker run -p $mysqlHostPort:3306 --name mysql8 --network=jeepay-net \
|
||||
--network-alias mysql \
|
||||
--restart=always --privileged=true \
|
||||
-v /etc/localtime:/etc/localtime:ro \
|
||||
-v $rootDir/mysql/log:/var/log/mysql \
|
||||
@@ -408,6 +409,7 @@ chmod 644 $rootDir/redis/config/redis.conf
|
||||
|
||||
# 镜像启动
|
||||
docker run -p $redisHostPort:6379 --name redis6 --network=jeepay-net \
|
||||
--network-alias redis \
|
||||
--restart=always --privileged=true \
|
||||
-v /etc/localtime:/etc/localtime:ro \
|
||||
-v $rootDir/redis/config/redis.conf:/etc/redis/redis.conf \
|
||||
@@ -517,6 +519,16 @@ echo "[5] Done. "
|
||||
# 复制java配置文件
|
||||
cd $rootDir/service/configs/ && cp -r $rootDir/sources/jeepay/conf/* .
|
||||
|
||||
# 把 conf 模板里的 Docker Compose 默认密码 rootroot 替换为本次安装实际使用的
|
||||
# mysql_pwd,保证 manager / merchant / payment 能连上脚本初始化的 MySQL。
|
||||
# 仅替换 datasource 段的密码(Redis password 为空,activemq 密码 "manager",不受影响)。
|
||||
for svc in manager merchant payment; do
|
||||
svcYml="$rootDir/service/configs/$svc/application.yml"
|
||||
if [ -f "$svcYml" ]; then
|
||||
sed -i "s|password: rootroot|password: $mysql_pwd|g" "$svcYml"
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
echo "[6.1] 下载并启动 java 项目 [ jeepaymanager ] .... "
|
||||
# 运行 java项目
|
||||
@@ -615,6 +627,20 @@ probeEndpoint "支付网关" 19216
|
||||
probeEndpoint "运营平台" 19217
|
||||
probeEndpoint "商户平台" 19218
|
||||
|
||||
# 8.3 DB + Redis 连通性探测:调用运营平台图形验证码接口,后端会向 Redis 写入
|
||||
# 验证码 token。如果 MySQL / Redis 容器别名解析失败或密码不对,这里会 5xx。
|
||||
vercodeCode=$(curl -s -o /dev/null -w '%{http_code}' -m 10 "http://127.0.0.1:19217/api/anon/auth/vercode?t=$(date +%s)" 2>/dev/null)
|
||||
if [ "$vercodeCode" = "200" ]; then
|
||||
echo "[8] 运营平台图形验证码接口 OK(MySQL / Redis 连通正常)"
|
||||
else
|
||||
echo "[8] WARN: 图形验证码接口 HTTP $vercodeCode,登录页可能拿不到验证码。"
|
||||
echo "[8] 典型原因:"
|
||||
echo "[8] 1) 容器别名解析:application.yml 中 host 写的是 mysql / redis,"
|
||||
echo "[8] 若对应容器未设置 --network-alias,会报 UnknownHostException。"
|
||||
echo "[8] 2) 密码错配:application.yml 里 password 与 MySQL 实际密码不一致。"
|
||||
echo "[8] 查看日志:docker logs --tail 50 jeepaymanager"
|
||||
fi
|
||||
|
||||
echo "[8] Done. "
|
||||
|
||||
echo ">>>>>>> "
|
||||
|
||||
+21
@@ -335,3 +335,24 @@
|
||||
4. 文档: docs/deploy/shell.md 卸载小节改为一条命令推荐 + 原路径方式
|
||||
作为备选,并说明何时需要手动 rootDir=xxx。
|
||||
5. 优化: install.sh 默认 jeepayRef 由 V3.2.5 跟进到 V3.2.6。
|
||||
|
||||
[v3.2.7_20260420]
|
||||
> 关键修复版本:V3.2.0 ~ V3.2.6 的 Shell 部署实际都连不上 MySQL / Redis
|
||||
> (登录页验证码不出、任何 DB 操作报异常),[8] 部署自检没覆盖这条通路
|
||||
> 所以之前都"假通过"。强烈建议受影响部署 uninstall + 重新 install。
|
||||
> 业务代码零改动,与 3.2.0 业务镜像完全兼容。
|
||||
1. 修复: docker run mysql8 / redis6 分别加 --network-alias mysql /
|
||||
--network-alias redis,使得 jeepay 应用在 jeepay-net 内用 Compose
|
||||
规格的 hostname "mysql" / "redis" 也能解析到对应容器。此前 manager
|
||||
/ merchant / payment 的 application.yml 里写的是 mysql / redis,而
|
||||
install.sh 启动的容器叫 mysql8 / redis6,DNS 解析失败导致
|
||||
UnknownHostException。
|
||||
2. 修复: install.sh 在 cp conf/* 到 service/configs/ 之后,自动把三份
|
||||
application.yml 里 datasource 段的占位密码 rootroot(Compose 默认)
|
||||
替换为 config.sh 里的 mysql_pwd,消除"容器启动用新密码、应用连库
|
||||
用旧密码"的 Access denied 错配。
|
||||
3. 新增: [8] 部署自检新增 DB + Redis 连通性探针——向运营平台
|
||||
/api/anon/auth/vercode 发 GET 请求,后端会向 Redis 写入验证码
|
||||
token。200 表示 MySQL / Redis 通路正常;非 200 打印 WARN 并给出
|
||||
hostname alias / 密码两种典型原因排查指引。
|
||||
4. 优化: install.sh 默认 jeepayRef 由 V3.2.6 跟进到 V3.2.7。
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
v3.2.6_20260419
|
||||
v3.2.7_20260420
|
||||
|
||||
Reference in New Issue
Block a user