- 更新部署进度文档,标记P5-02/P5-03为已完成状态 - 修复中文乱码问题,MySQL数据层使用UNHEX函数配合nginx字符集设置 - 配置im-service和update-service的内部服务URL,从127.0.0.1改为Docker服务名 - 实现全功能验收,nginx为所有服务添加路由映射并返回正确的状态码 - 创建私有化部署默认信息文档,记录完整的部署配置和访问地址 - 添加部署清理脚本clean.sh,支持一键清理容器、配置和数据目录 - 更新敏感配置模板,添加详细的密码和密钥配置说明 - 优化前端实时消息轮询机制,通过WebSocket心跳检测决定是否启用HTTP轮询回退
126 行
4.7 KiB
Bash
可执行文件
126 行
4.7 KiB
Bash
可执行文件
#!/usr/bin/env bash
|
||
# clean.sh — 清理本次私有化部署,恢复到全新状态,供重新 deploy.sh 使用
|
||
#
|
||
# 操作:
|
||
# 1. 停止并删除所有 Compose 容器及网络
|
||
# 2. 删除 deploy.sh 生成的所有配置文件
|
||
# 3. 清空 data/ 数据目录(MySQL / Redis / uploads / update),保留 .gitkeep
|
||
# 4. 清除部署状态文件和日志
|
||
|
||
set -euo pipefail
|
||
|
||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||
cd "$ROOT_DIR"
|
||
|
||
ok() { printf ' \033[32m✓\033[0m %s\n' "$*"; }
|
||
info() { printf ' \033[1;36m→\033[0m %s\n' "$*"; }
|
||
warn() { printf ' \033[33m⚠\033[0m %s\n' "$*"; }
|
||
|
||
printf '\n\033[1;31m══════════════════════════════════════════════════\033[0m\n'
|
||
printf '\033[1;31m XuqmGroup 私有化部署清理脚本\033[0m\n'
|
||
printf '\033[1;31m══════════════════════════════════════════════════\033[0m\n'
|
||
printf ' 目录: %s\n\n' "$ROOT_DIR"
|
||
|
||
printf ' \033[33m警告:此操作将删除所有容器、配置和数据,不可恢复!\033[0m\n'
|
||
read -rp " 确认清理?输入 yes 继续: " _confirm
|
||
[ "$_confirm" = "yes" ] || { printf ' 已取消\n'; exit 0; }
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# 1. 停止并删除 Compose 容器、网络
|
||
# ---------------------------------------------------------------------------
|
||
printf '\n [1/4] 停止容器并删除网络...\n'
|
||
|
||
_compose_down() {
|
||
local f="$1"; shift
|
||
if [ -f "$f" ]; then
|
||
docker compose -f "$f" "$@" down --remove-orphans --timeout 15 2>/dev/null && true
|
||
fi
|
||
}
|
||
|
||
# 先尝试带 override,再降级到单文件
|
||
if [ -f docker-compose.override.yml ]; then
|
||
docker compose \
|
||
-f docker-compose.infra.yml \
|
||
-f docker-compose.yml \
|
||
-f docker-compose.override.yml \
|
||
down --remove-orphans --timeout 15 2>/dev/null && true
|
||
else
|
||
docker compose \
|
||
-f docker-compose.infra.yml \
|
||
-f docker-compose.yml \
|
||
down --remove-orphans --timeout 15 2>/dev/null && true
|
||
fi
|
||
|
||
ok "容器已停止"
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# 2. 删除 deploy.sh 生成的配置文件
|
||
# ---------------------------------------------------------------------------
|
||
printf '\n [2/4] 删除生成的配置文件...\n'
|
||
|
||
# 顶层生成文件
|
||
rm -f .env
|
||
rm -f docker-compose.override.yml
|
||
ok ".env、docker-compose.override.yml"
|
||
|
||
# config/ 下的生成文件
|
||
rm -f config/secrets.env
|
||
rm -f config/xuqm.env
|
||
rm -f config/tenant/bootstrap.env
|
||
rm -f config/nginx/conf.d/xuqm.conf
|
||
rm -f config/sdk/xuqm-private-sdk.json
|
||
rm -f config/docs/docs-runtime.json
|
||
ok "config/secrets.env、xuqm.env、bootstrap.env、nginx conf、sdk json"
|
||
|
||
# vendors / mail 中由 deploy.sh 写入的文件(保留 .example 模板)
|
||
# deploy.sh 用 cat > 覆盖写入,清理后让脚本重新生成
|
||
rm -f config/vendors/push.env
|
||
rm -f config/vendors/store-submit.env
|
||
rm -f config/mail/smtp.env
|
||
ok "config/vendors/*.env、config/mail/smtp.env"
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# 3. 清空数据目录(保留 .gitkeep)
|
||
# ---------------------------------------------------------------------------
|
||
printf '\n [3/4] 清空 data/ 数据目录...\n'
|
||
|
||
_clean_dir() {
|
||
local dir="$1"
|
||
if [ -d "$dir" ]; then
|
||
find "$dir" -mindepth 1 ! -name '.gitkeep' -exec rm -rf {} + 2>/dev/null && true
|
||
ok "$dir"
|
||
else
|
||
warn "$dir 不存在,跳过"
|
||
fi
|
||
}
|
||
|
||
_clean_dir data/mysql
|
||
_clean_dir data/redis
|
||
_clean_dir data/uploads
|
||
_clean_dir data/update
|
||
_clean_dir data/backups
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# 4. 清除状态文件和日志
|
||
# ---------------------------------------------------------------------------
|
||
printf '\n [4/4] 清除部署状态和日志...\n'
|
||
|
||
if [ -d .deploy-state ]; then
|
||
rm -rf .deploy-state
|
||
ok ".deploy-state/"
|
||
fi
|
||
|
||
if [ -f logs/audit.log ]; then
|
||
rm -f logs/audit.log
|
||
ok "logs/audit.log"
|
||
fi
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# 完成
|
||
# ---------------------------------------------------------------------------
|
||
printf '\n\033[1;32m══════════════════════════════════════════════════\033[0m\n'
|
||
printf '\033[1;32m 清理完成!\033[0m\n'
|
||
printf '\033[1;32m══════════════════════════════════════════════════\033[0m\n'
|
||
printf ' 现在可以重新运行一键部署:\n'
|
||
printf '\n bash scripts/deploy.sh\n\n'
|