easyai/update.sh

134 lines
4.3 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
set -e # 发生错误时终止脚本执行
# 参数解析
SKIP_COMPOSE_UPDATE=false
# 解析命令行参数
while [[ $# -gt 0 ]]; do
case $1 in
--skip-compose-update|-s)
SKIP_COMPOSE_UPDATE=true
shift
;;
--help|-h)
echo "用法: $0 [选项]"
echo ""
echo "选项:"
echo " -s, --skip-compose-update 跳过 docker-compose.yml 的更新"
echo " -h, --help 显示此帮助信息"
echo ""
exit 0
;;
*)
echo "❌ 未知参数: $1"
echo "使用 --help 或 -h 查看帮助信息"
exit 1
;;
esac
done
# 更新 docker-compose.yml 文件
if [ "$SKIP_COMPOSE_UPDATE" = false ]; then
echo ""
echo "==========================="
echo "📄 检查并更新 docker-compose.yml"
echo "==========================="
COMPOSE_FILE="docker-compose.yml"
COMPOSE_URL="https://git.51easyai.com/wangbo/easyai/raw/main/docker-compose.yml"
TEMP_FILE=$(mktemp)
# 检查本地文件是否存在
if [ ! -f "$COMPOSE_FILE" ]; then
echo "⚠️ 本地 $COMPOSE_FILE 不存在,直接下载最新版本..."
curl -fsSL "$COMPOSE_URL" -o "$COMPOSE_FILE"
echo "$COMPOSE_FILE 已下载"
else
echo "📥 正在下载远程 $COMPOSE_FILE..."
if curl -fsSL "$COMPOSE_URL" -o "$TEMP_FILE"; then
# 比较本地文件和远程文件的内容
if cmp -s "$COMPOSE_FILE" "$TEMP_FILE"; then
echo "✅ 本地 $COMPOSE_FILE 已是最新版本,无需更新"
rm -f "$TEMP_FILE"
else
echo "🔄 检测到新版本,正在更新..."
# 备份原文件
BACKUP_FILE="${COMPOSE_FILE}.bak"
cp "$COMPOSE_FILE" "$BACKUP_FILE"
echo "💾 原文件已备份为 $BACKUP_FILE"
# 替换为新文件
mv "$TEMP_FILE" "$COMPOSE_FILE"
echo "$COMPOSE_FILE 已更新到最新版本"
fi
else
echo "❌ 无法下载远程文件,跳过更新步骤"
rm -f "$TEMP_FILE"
fi
fi
echo ""
else
echo "⏭️ 跳过 docker-compose.yml 更新(已使用 --skip-compose-update 参数)"
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应用更新成功"