#!/bin/bash set -e # 发生错误时终止脚本执行 # 仅支持 -h/--help 快速查看 if [[ "${1:-}" =~ ^(-h|--help)$ ]]; then echo "用法: $0" echo "" echo "脚本将提示选择更新方式,默认拉取仓库并更新镜像。" exit 0 fi # 进入脚本所在目录(项目根目录) SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd)" cd "$SCRIPT_DIR" # 命令行内选择更新方式(默认:更新并拉取仓库) echo "" echo "请选择更新方式:" echo " [1] 更新并拉取仓库(git pull)+ 更新镜像并重启(默认)" echo " [2] 仅更新镜像并重启(跳过 git pull)" read -r -p "请选择 [1/2,回车默认 1]: " choice choice="${choice:-1}" SKIP_REPO_UPDATE=false case "$choice" in 2) SKIP_REPO_UPDATE=true ;; 1) ;; *) echo "❌ 无效选择,将使用默认:更新并拉取仓库"; SKIP_REPO_UPDATE=false ;; esac # 拉取整个仓库更新 if [ "$SKIP_REPO_UPDATE" = false ]; then echo "" echo "===========================" echo "📥 拉取仓库最新代码" echo "===========================" if [ ! -d .git ]; then echo "❌ 当前目录不是 Git 仓库,无法执行 git pull" echo " 请使用 git clone 克隆项目后即可使用 update.sh 更新" echo " 克隆命令: git clone https://git.51easyai.com/wangbo/easyai && cd easyai" exit 1 fi echo "📥 正在执行 git pull..." if git pull; then echo "✅ 仓库已更新到最新版本" else echo "❌ git pull 失败,请检查网络或远程仓库配置" exit 1 fi # 确保环境配置文件存在(从 .sample 生成,不覆盖已有文件) echo "" echo "📝 检查环境配置文件..." [ ! -f .env ] && [ -f .env.sample ] && cp .env.sample .env && echo " ✓ .env" [ ! -f .env.tools ] && [ -f .env.tools.sample ] && cp .env.tools.sample .env.tools && echo " ✓ .env.tools" [ ! -f .env.ASG ] && [ -f .env.ASG.sample ] && cp .env.ASG.sample .env.ASG && echo " ✓ .env.ASG" [ ! -f .env.AMS ] && [ -f .env.AMS.sample ] && cp .env.AMS.sample .env.AMS && echo " ✓ .env.AMS" echo "" else echo "⏭️ 跳过仓库更新,仅更新镜像并重启" echo "" fi echo "===========================" echo "🚀 开始自动安装 Docker 和 Docker Compose" echo "===========================" # 检查 Docker 是否已安装 if command -v docker &> /dev/null; then echo "✅ Docker 已安装,跳过安装步骤" else # 原有的 Docker 安装步骤 echo "📦 安装依赖..." sudo apt update -y sudo apt install -y apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release echo "🔑 添加 Docker GPG 密钥..." curl -fsSL https://mirrors.nwafu.edu.cn生成注释ker-ce/linux/ubuntu/gpg | sudo apt-key add - echo "🌍 添加 Docker 源..." sudo add-apt-repository -y "deb [arch=amd64] https://mirrors.nwafu.edu.cn生成注释ker-ce/linux/ubuntu/ $(lsb_release -cs) stable" sudo apt-get update -y echo "🐳 安装 Docker..." sudo apt-get install -y docker.io echo "✅ 启动并设置 Docker 开机自启..." sudo systemctl enable docker sudo systemctl start docker fi # 检测并使用正确的 Docker Compose 命令 # 优先使用新版本的 docker compose(作为 docker 的子命令) if docker compose version &> /dev/null; then DOCKER_COMPOSE_CMD="docker compose" echo "✅ 检测到 Docker Compose (新版本: docker compose)" elif command -v docker-compose &> /dev/null; then DOCKER_COMPOSE_CMD="docker-compose" echo "✅ 检测到 Docker Compose (旧版本: docker-compose)" else echo "⚙️ 安装 Docker Compose..." sudo mv ./docker-compose-linux-x86_64 /usr/bin/docker-compose #设置权限 chmod +x /usr/bin/docker-compose DOCKER_COMPOSE_CMD="docker-compose" echo "✅ Docker Compose 安装完成" fi echo "📌 Docker 运行状态:" sudo systemctl status docker --no-pager || true echo "📌 Docker Compose 版本:" $DOCKER_COMPOSE_CMD version echo "🎉 Docker 和 Docker Compose 已就绪!" echo "🚀 重新启动EasyAI" sudo $DOCKER_COMPOSE_CMD pull && sudo $DOCKER_COMPOSE_CMD up -d echo "🎉EasyAI应用更新成功"