fix(install): 安装向导 Redis 密码不被 nx update/Compose 覆盖
Compose 不再注入 NEXUS_REDIS_URL;nx update 保留卷内带密码 URL;步骤 4 可从 install state 修复无密码 URL。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+34
-2
@@ -200,6 +200,32 @@ upsert_env_var() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Prefer wizard-written redis://:pass@host from nexus-state or .env.prod; avoid clobbering on nx update.
|
||||
resolve_nexus_redis_url() {
|
||||
local redis_host="$1"
|
||||
local env_file="$2"
|
||||
local vol_url="" existing="" host_lc="${redis_host,,}"
|
||||
|
||||
local state_vol
|
||||
state_vol="$(docker volume ls -q --filter name=nexus-state 2>/dev/null | head -1 || true)"
|
||||
if [[ -n "$state_vol" ]]; then
|
||||
vol_url="$(docker run --rm -v "${state_vol}:/data" alpine sh -c \
|
||||
"grep '^NEXUS_REDIS_URL=' /data/.env 2>/dev/null | cut -d= -f2- | tr -d '\"'" 2>/dev/null || true)"
|
||||
if [[ -n "$vol_url" && "${vol_url,,}" == *"${host_lc}"* ]]; then
|
||||
echo "$vol_url"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
if [[ -f "$env_file" ]]; then
|
||||
existing="$(grep '^NEXUS_REDIS_URL=' "$env_file" 2>/dev/null | cut -d= -f2- | tr -d '"' || true)"
|
||||
if [[ -n "$existing" && "$existing" == *"@"* && "${existing,,}" == *"${host_lc}"* ]]; then
|
||||
echo "$existing"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
echo "redis://${redis_host}:6379/0"
|
||||
}
|
||||
|
||||
write_1panel_hosts_volume() {
|
||||
local mysql_host="${1:-}" redis_host="${2:-}"
|
||||
[[ -n "$mysql_host" || -n "$redis_host" ]] || return 0
|
||||
@@ -257,8 +283,14 @@ sync_1panel_service_hosts() {
|
||||
NEXUS_1PANEL_REDIS_HOST=*)
|
||||
redis_host="${line#NEXUS_1PANEL_REDIS_HOST=}"
|
||||
upsert_env_var "$env_file" NEXUS_1PANEL_REDIS_HOST "$redis_host"
|
||||
upsert_env_var "$env_file" "NEXUS_REDIS_URL" "redis://${redis_host}:6379/0"
|
||||
info "1Panel Redis 容器: $redis_host(NEXUS_REDIS_URL 已同步)"
|
||||
local redis_url
|
||||
redis_url="$(resolve_nexus_redis_url "$redis_host" "$env_file")"
|
||||
upsert_env_var "$env_file" "NEXUS_REDIS_URL" "$redis_url"
|
||||
if [[ "$redis_url" == *"@"* ]]; then
|
||||
info "1Panel Redis 容器: $redis_host(NEXUS_REDIS_URL 已保留向导密码)"
|
||||
else
|
||||
info "1Panel Redis 容器: $redis_host(NEXUS_REDIS_URL 占位,向导步骤 3 填密码后写入卷 .env)"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done <<<"$detect_out"
|
||||
|
||||
Reference in New Issue
Block a user