feat: 支持 XUQM_CLEAN_DATA=1 在新建部署时清除旧数据目录

这个提交包含在:
xuqinmin12 2026-06-12 19:14:47 +08:00
父节点 2f304d8384
当前提交 dde9a76029

查看文件

@ -118,6 +118,7 @@ printf ' 2) 迁移租户 — 从公有平台导入现有租户数据(需迁
# XUQM_EXTERNAL_URL 外部访问地址(如 https://win.xuqinmin.com # XUQM_EXTERNAL_URL 外部访问地址(如 https://win.xuqinmin.com
# XUQM_NGINX_MODE 1=直接80 / 2=本地11223默认1 # XUQM_NGINX_MODE 1=直接80 / 2=本地11223默认1
# XUQM_MIGRATE_KEY 迁移密钥migrate 模式需要) # XUQM_MIGRATE_KEY 迁移密钥migrate 模式需要)
# XUQM_CLEAN_DATA 1=新建部署时清除已有 MySQL/Redis 数据目录(谨慎使用)
_NONINTERACTIVE="${XUQM_NONINTERACTIVE:-0}" _NONINTERACTIVE="${XUQM_NONINTERACTIVE:-0}"
DEPLOY_MODE="" DEPLOY_MODE=""
@ -569,6 +570,24 @@ printf '%s' "$REGISTRY_PASSWORD" | \
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
step "启动基础设施容器MySQL / Redis" step "启动基础设施容器MySQL / Redis"
# XUQM_CLEAN_DATA=1清除旧数据目录仅 new 模式下生效)
if [ "${XUQM_CLEAN_DATA:-0}" = "1" ] && [ "$DEPLOY_MODE" = "new" ]; then
warn "XUQM_CLEAN_DATA=1清除旧 MySQL/Redis 数据目录,确保全新部署..."
docker compose \
--env-file "$ROOT_DIR/.env" \
-f "$ROOT_DIR/docker-compose.yml" \
-f "$ROOT_DIR/docker-compose.infra.yml" \
--profile infra-mysql --profile infra-redis \
down 2>/dev/null || true
rm -rf "$ROOT_DIR/data/mysql" "$ROOT_DIR/data/redis" 2>/dev/null || \
{ [ -n "${XUQM_SUDO_PASS:-}" ] && printf '%s\n' "$XUQM_SUDO_PASS" | \
sudo -S rm -rf "$ROOT_DIR/data/mysql" "$ROOT_DIR/data/redis" 2>/dev/null; } || true
mkdir -p "$ROOT_DIR/data/mysql" "$ROOT_DIR/data/redis" 2>/dev/null || \
{ [ -n "${XUQM_SUDO_PASS:-}" ] && printf '%s\n' "$XUQM_SUDO_PASS" | \
sudo -S mkdir -p "$ROOT_DIR/data/mysql" "$ROOT_DIR/data/redis" 2>/dev/null; } || true
ok "旧数据已清除"
fi
docker compose \ docker compose \
--env-file "$ROOT_DIR/.env" \ --env-file "$ROOT_DIR/.env" \
-f "$ROOT_DIR/docker-compose.yml" \ -f "$ROOT_DIR/docker-compose.yml" \