fix(update): 升级时自动补齐旧 secrets.env 缺失的 Spring 密码变量

旧部署的 secrets.env 只有 MYSQL_PASSWORD / REDIS_PASSWORD,
新版 docker-compose.yml 已移除 environment 块中的密码覆盖,
改由 env_file 注入 SPRING_DATASOURCE_PASSWORD 等 Spring 直读变量。
update.sh 升级时自动检测并追加缺失条目,保证幂等且兼容旧部署。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
这个提交包含在:
徐勤民 2026-05-21 11:30:23 +08:00
父节点 429077e7eb
当前提交 33ae1b9599

查看文件

@ -104,6 +104,21 @@ set -a
. "$ROOT_DIR/config/secrets.env" . "$ROOT_DIR/config/secrets.env"
set +a set +a
# 迁移:旧版 secrets.env 没有 Spring 直接读取的 env 名,补齐以防 docker compose
# 变量替换失败时覆盖成空字符串deploy.sh 新建部署已自动写入,此处仅升级兼容)
_patched=0
if ! grep -q "^SPRING_DATASOURCE_PASSWORD=" "$ROOT_DIR/config/secrets.env" 2>/dev/null; then
_mp="$(grep '^MYSQL_PASSWORD=' "$ROOT_DIR/config/secrets.env" | cut -d= -f2-)"
printf '\nSPRING_DATASOURCE_PASSWORD=%s\n' "$_mp" >> "$ROOT_DIR/config/secrets.env"
_patched=1
fi
if ! grep -q "^SPRING_DATA_REDIS_PASSWORD=" "$ROOT_DIR/config/secrets.env" 2>/dev/null; then
_rp="$(grep '^REDIS_PASSWORD=' "$ROOT_DIR/config/secrets.env" | cut -d= -f2-)"
printf 'SPRING_DATA_REDIS_PASSWORD=%s\n' "$_rp" >> "$ROOT_DIR/config/secrets.env"
_patched=1
fi
[ "$_patched" -eq 1 ] && ok "secrets.env 已补齐 SPRING_DATASOURCE_PASSWORD / SPRING_DATA_REDIS_PASSWORD"
_CONSOLE_DOMAIN="$(grep '^CONSOLE_DOMAIN=' "$ROOT_DIR/config/xuqm.env" 2>/dev/null \ _CONSOLE_DOMAIN="$(grep '^CONSOLE_DOMAIN=' "$ROOT_DIR/config/xuqm.env" 2>/dev/null \
| cut -d= -f2- | tr -d '"' | tr -d "'")" | cut -d= -f2- | tr -d '"' | tr -d "'")"
_NGINX_BIND="${NGINX_BIND:-80}" _NGINX_BIND="${NGINX_BIND:-80}"