合并启动脚本到deploy.sh,支持reset重置数据

- 删除 start_web.sh,统一使用 deploy.sh(Docker部署)
- 新增子命令:reset(删除所有数据需确认)、logs、stop、restart
- 更新 README 文档
This commit is contained in:
yml2213
2026-06-24 16:11:00 +08:00
parent a7da949d9c
commit ab84355cdc
3 changed files with 196 additions and 208 deletions
+182 -59
View File
@@ -6,67 +6,190 @@ set -e
ROOT_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$ROOT_DIR"
echo ""
echo "=============================="
echo " 斗鱼批量登录 - Docker 部署"
echo "=============================="
# ── 工具函数 ──────────────────────────────────────────────
# 检查 Docker
if ! command -v docker &> /dev/null; then
echo "❌ 未安装 Docker,请先安装:"
echo " curl -fsSL https://get.docker.com | sh"
exit 1
fi
# 检查 docker compose
if docker compose version &> /dev/null; then
COMPOSE="docker compose"
elif command -v docker-compose &> /dev/null; then
COMPOSE="docker-compose"
else
echo "❌ 未安装 docker compose,请先安装 Docker Compose"
exit 1
fi
echo " 使用: $COMPOSE"
echo ""
# 创建数据和日志目录
mkdir -p data logs
# 构建并启动
echo "正在构建镜像(首次构建约3-5分钟)..."
$COMPOSE build
echo ""
echo "正在启动服务..."
$COMPOSE up -d
echo ""
echo "等待服务启动..."
sleep 3
# 健康检查
for i in $(seq 1 10); do
if curl -s http://localhost:8000/api/health | grep -q "ok" 2>/dev/null; then
detect_compose() {
if docker compose version &> /dev/null; then
echo "docker compose"
elif command -v docker-compose &> /dev/null; then
echo "docker-compose"
else
echo ""
echo "=============================="
echo " ✅ 部署成功!"
echo "=============================="
echo " 访问地址: http://localhost:8000"
echo " 默认账号见环境变量 ADMIN_USERNAME/ADMIN_PASSWORD(未设置则为 admin/admin123"
echo ""
echo " 查看日志: $COMPOSE logs -f"
echo " 停止服务: $COMPOSE down"
echo " 重启服务: $COMPOSE restart"
echo "=============================="
fi
}
# ── 子命令 ──────────────────────────────────────────────
cmd_deploy() {
echo ""
echo "=============================="
echo " 斗鱼批量登录 - Docker 部署"
echo "=============================="
if ! command -v docker &> /dev/null; then
echo "❌ 未安装 Docker,请先安装:"
echo " curl -fsSL https://get.docker.com | sh"
exit 1
fi
COMPOSE=$(detect_compose)
if [ -z "$COMPOSE" ]; then
echo "❌ 未安装 docker compose,请先安装 Docker Compose"
exit 1
fi
echo " 使用: $COMPOSE"
echo ""
# 创建数据和日志目录
mkdir -p data logs
# 构建并启动
echo "正在构建镜像(首次构建约3-5分钟)..."
$COMPOSE build
echo ""
echo "正在启动服务..."
$COMPOSE up -d
echo ""
echo "等待服务启动..."
# 健康检查
for i in $(seq 1 15); do
if curl -s http://localhost:8000/api/health | grep -q "ok" 2>/dev/null; then
echo ""
echo "=============================="
echo " ✅ 部署成功!"
echo "=============================="
echo " 访问地址: http://localhost:8000"
echo " 默认账号见环境变量 ADMIN_USERNAME/ADMIN_PASSWORD(未设置则为 admin/admin123"
echo ""
echo " 查看日志: $COMPOSE logs -f"
echo " 停止服务: $COMPOSE down"
echo " 重启服务: $COMPOSE restart"
echo " 重置数据: ./deploy.sh reset"
echo "=============================="
exit 0
fi
echo " 等待中... ($i/15)"
sleep 2
done
echo ""
echo "❌ 服务启动超时,查看日志:"
$COMPOSE logs --tail 30
exit 1
}
cmd_reset() {
echo ""
echo "=============================="
echo " ⚠️ 重置所有数据"
echo "=============================="
echo ""
echo " 将删除以下内容:"
echo " • 数据库文件 (data/web.db)"
echo " • 历史Cookie (data/cookies/)"
echo " • 应用日志 (logs/)"
echo " • Docker容器和镜像"
echo ""
# 交互确认
read -rp " 确认删除所有数据?输入 YES 继续: " confirm
if [ "$confirm" != "YES" ]; then
echo " 已取消"
exit 0
fi
echo " 等待中... ($i/10)"
sleep 2
done
echo ""
echo "❌ 服务启动超时,查看日志:"
$COMPOSE logs --tail 30
exit 1
COMPOSE=$(detect_compose)
# 停止并删除容器
if [ -n "$COMPOSE" ]; then
echo " 停止并删除容器..."
$COMPOSE down --rmi local 2>/dev/null || $COMPOSE down 2>/dev/null || true
fi
# 删除数据文件
echo " 删除数据库..."
rm -rf data/web.db data/web.db-shm data/web.db-wal
echo " 删除Cookie..."
rm -rf data/cookies/
echo " 删除日志..."
rm -rf logs/*.log
# 删除其他临时文件
rm -rf data/accounts.json data/gui_state.json data/app.db 2>/dev/null || true
echo ""
echo "=============================="
echo " ✅ 数据已重置"
echo "=============================="
echo " 运行 ./deploy.sh 重新部署"
echo "=============================="
}
cmd_logs() {
COMPOSE=$(detect_compose)
if [ -z "$COMPOSE" ]; then
echo "❌ 未检测到 docker compose"
exit 1
fi
$COMPOSE logs -f
}
cmd_stop() {
COMPOSE=$(detect_compose)
if [ -z "$COMPOSE" ]; then
echo "❌ 未检测到 docker compose"
exit 1
fi
$COMPOSE down
echo "✅ 服务已停止"
}
cmd_restart() {
COMPOSE=$(detect_compose)
if [ -z "$COMPOSE" ]; then
echo "❌ 未检测到 docker compose"
exit 1
fi
$COMPOSE restart
echo "✅ 服务已重启"
}
# ── 帮助 ──────────────────────────────────────────────────
cmd_help() {
echo ""
echo "=============================="
echo " 斗鱼批量登录 - 部署工具"
echo "=============================="
echo ""
echo " 用法: ./deploy.sh <命令>"
echo ""
echo " 命令:"
echo " (无参数) 构建并部署"
echo " reset 删除所有数据并重置(需确认)"
echo " logs 查看实时日志"
echo " stop 停止服务"
echo " restart 重启服务"
echo " help 显示帮助"
echo ""
echo " 访问地址: http://localhost:8000"
echo " 默认账号见环境变量 ADMIN_USERNAME/ADMIN_PASSWORD"
echo ""
}
# ── 入口 ──────────────────────────────────────────────────
case "${1:-}" in
reset) cmd_reset ;;
logs) cmd_logs ;;
stop) cmd_stop ;;
restart) cmd_restart ;;
help|-h) cmd_help ;;
*) cmd_deploy ;;
esac