增加centos兼容
This commit is contained in:
parent
89035ee65e
commit
6947c97ab4
119
start.sh
119
start.sh
@ -6,67 +6,150 @@ echo "==========================="
|
|||||||
echo "🚀 开始自动安装 Docker 和 Docker Compose"
|
echo "🚀 开始自动安装 Docker 和 Docker Compose"
|
||||||
echo "==========================="
|
echo "==========================="
|
||||||
|
|
||||||
# 获取操作系统类型
|
# 获取操作系统类型和版本
|
||||||
OS=$(hostnamectl | grep "Operating System" | awk '{print $3}')
|
OS_FAMILY=$(hostnamectl | grep "Operating System" | awk '{print $3}')
|
||||||
|
OS_VERSION=""
|
||||||
|
if [[ "$OS_FAMILY" == "CentOS" ]]; then
|
||||||
|
OS_VERSION=$(grep -oP '(?<=^VERSION_ID=")[0-9.]+' /etc/os-release | cut -d'.' -f1)
|
||||||
|
elif [[ "$OS_FAMILY" == "Ubuntu" ]]; then
|
||||||
|
OS_VERSION=$(lsb_release -cs)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 函数:检查并等待网络连接
|
||||||
|
check_network() {
|
||||||
|
echo "🌐 检查网络连接..."
|
||||||
|
for i in {1..10}; do
|
||||||
|
if curl -sSf https://download.docker.com/ &> /dev/null; then
|
||||||
|
echo "✅ 网络连接正常。"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo "⚠️ 网络连接异常或无法访问 Docker 仓库,等待 10 秒后重试... ($i/10)"
|
||||||
|
sleep 10
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "❌ 无法建立网络连接到 Docker 仓库,请检查您的网络配置。"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# 预检网络连接
|
||||||
|
check_network
|
||||||
|
|
||||||
# Docker 安装
|
# Docker 安装
|
||||||
if command -v docker &> /dev/null; then
|
if command -v docker &> /dev/null; then
|
||||||
echo "✅ Docker 已安装,跳过安装步骤"
|
echo "✅ Docker 已安装,跳过安装步骤"
|
||||||
else
|
else
|
||||||
if [[ "$OS" == "Ubuntu" ]]; then
|
if [[ "$OS_FAMILY" == "Ubuntu" ]]; then
|
||||||
echo "📦 安装依赖 (Ubuntu)..."
|
echo "📦 安装依赖 (Ubuntu)..."
|
||||||
sudo apt update -y
|
sudo apt update -y
|
||||||
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
|
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
|
||||||
|
|
||||||
echo "🔑 添加 Docker GPG 密钥 (Ubuntu)..."
|
echo "🔑 添加 Docker GPG 密钥 (Ubuntu)..."
|
||||||
curl -fsSL https://mirrors.nwafu.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
|
# 使用国内镜像作为备用,或直接从 Docker 官方获取
|
||||||
|
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg || \
|
||||||
|
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||||||
|
|
||||||
echo "🌍 添加 Docker 源 (Ubuntu)..."
|
echo "🌍 添加 Docker 源 (Ubuntu)..."
|
||||||
sudo add-apt-repository -y "deb [arch=amd64] https://mirrors.nwafu.edu.cn/docker-ce/linux/ubuntu/ $(lsb_release -cs) stable"
|
echo \
|
||||||
|
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
|
||||||
|
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||||
|
|
||||||
sudo apt-get update -y
|
sudo apt-get update -y
|
||||||
|
|
||||||
echo "🐳 安装 Docker (Ubuntu)..."
|
echo "🐳 安装 Docker (Ubuntu)..."
|
||||||
sudo apt-get install -y docker.io
|
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||||
|
# 确保安装 docker-compose-plugin 而不是旧版 docker-compose
|
||||||
|
|
||||||
elif [[ "$OS" == "CentOS" ]]; then
|
elif [[ "$OS_FAMILY" == "CentOS" ]]; then
|
||||||
echo "📦 安装依赖 (CentOS)..."
|
echo "📦 安装依赖 (CentOS)..."
|
||||||
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
|
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
|
||||||
|
|
||||||
echo "🌍 添加 Docker 源 (CentOS)..."
|
echo "🌍 添加 Docker 源 (CentOS)..."
|
||||||
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
|
# 尝试使用官方源,如果失败则提示用户检查网络或考虑配置国内镜像
|
||||||
|
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo || {
|
||||||
|
echo "❌ 无法添加 Docker 官方源。请检查您的网络连接或尝试手动配置国内镜像源。"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# CentOS 8+ 可能会遇到 module 冲突,禁用默认的 container-tools 模块
|
||||||
|
if [[ "$OS_VERSION" -ge "8" ]]; then
|
||||||
|
echo "⚙️ 禁用 CentOS 8+ 默认的 container-tools 模块以避免冲突..."
|
||||||
|
sudo yum module disable -y container-tools
|
||||||
|
sudo yum module enable -y container-tools:docker
|
||||||
|
fi
|
||||||
|
|
||||||
echo "🐳 安装 Docker (CentOS)..."
|
echo "🐳 安装 Docker (CentOS)..."
|
||||||
sudo yum install -y docker-ce docker-ce-cli containerd.io
|
# 尝试安装 Docker CE 及其组件,包括 buildx 插件
|
||||||
|
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin || {
|
||||||
|
echo "❌ Docker 或其组件安装失败。请检查错误日志或尝试手动安装。"
|
||||||
|
echo "提示:如果遇到 'No more mirrors to try' 错误,可能是网络问题或防火墙阻止了访问。"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
echo "❌ 未知操作系统,无法安装 Docker。"
|
echo "❌ 未知操作系统 ($OS_FAMILY),无法安装 Docker。"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "✅ 启动并设置 Docker 开机自启..."
|
echo "✅ 启动并设置 Docker 开机自启..."
|
||||||
sudo systemctl enable docker
|
sudo systemctl enable docker
|
||||||
sudo systemctl start docker
|
sudo systemctl start docker
|
||||||
|
# 将当前用户添加到 docker 组,以便无需 sudo 运行 Docker 命令
|
||||||
|
if ! getent group docker | grep -qw "$USER"; then
|
||||||
|
echo "👥 将当前用户 ($USER) 添加到 docker 组..."
|
||||||
|
sudo usermod -aG docker "$USER"
|
||||||
|
echo "🔔 请注销并重新登录,以便更改生效。"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Docker Compose 安装
|
# Docker Compose 安装(使用 docker-compose-plugin 替代独立安装)
|
||||||
if command -v docker-compose &> /dev/null; then
|
# 新版 Docker 建议使用 docker-compose-plugin,它是 Docker CLI 的一部分
|
||||||
echo "✅ Docker Compose 已安装,跳过安装步骤"
|
if command -v docker-compose &> /dev/null && ! command -v docker-compose-plugin &> /dev/null; then
|
||||||
|
echo "⚠️ 检测到旧版 Docker Compose 独立安装,建议升级到 docker-compose-plugin。"
|
||||||
|
echo "⚙️ 尝试安装 docker-compose-plugin..."
|
||||||
|
if [[ "$OS_FAMILY" == "Ubuntu" ]]; then
|
||||||
|
sudo apt-get install -y docker-compose-plugin
|
||||||
|
elif [[ "$OS_FAMILY" == "CentOS" ]]; then
|
||||||
|
sudo yum install -y docker-compose-plugin
|
||||||
|
fi
|
||||||
|
# 移除旧版,如果旧版存在且已成功安装新版
|
||||||
|
if command -v docker-compose-plugin &> /dev/null && [[ -f "/usr/local/bin/docker-compose" ]]; then
|
||||||
|
echo "🗑️ 移除旧版 Docker Compose 独立安装..."
|
||||||
|
sudo rm -f /usr/local/bin/docker-compose
|
||||||
|
fi
|
||||||
|
elif command -v docker-compose-plugin &> /dev/null; then
|
||||||
|
echo "✅ Docker Compose (插件版) 已安装,跳过安装步骤"
|
||||||
else
|
else
|
||||||
echo "⚙️ 安装 Docker Compose..."
|
echo "⚙️ 安装 Docker Compose (插件版)..."
|
||||||
# 假设 docker-compose-linux-x86_64 文件与脚本在同一目录下
|
if [[ "$OS_FAMILY" == "Ubuntu" ]]; then
|
||||||
sudo mv ./docker-compose-linux-x86_64 /usr/local/bin/docker-compose
|
sudo apt-get install -y docker-compose-plugin
|
||||||
# 设置权限
|
elif [[ "$OS_FAMILY" == "CentOS" ]]; then
|
||||||
sudo chmod +x /usr/local/bin/docker-compose
|
sudo yum install -y docker-compose-plugin
|
||||||
|
else
|
||||||
|
echo "❌ 未知操作系统,无法安装 Docker Compose 插件版。"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "📌 Docker 运行状态:"
|
echo "📌 Docker 运行状态:"
|
||||||
sudo systemctl status docker --no-pager || true
|
sudo systemctl status docker --no-pager || true
|
||||||
|
|
||||||
echo "📌 Docker Compose 版本:"
|
echo "📌 Docker Compose 版本:"
|
||||||
|
# 优先使用 docker compose 命令(新版),如果不行再尝试 docker-compose(旧版或别名)
|
||||||
|
if command -v docker &> /dev/null && docker compose version &> /dev/null; then
|
||||||
|
docker compose version
|
||||||
|
elif command -v docker-compose &> /dev/null; then
|
||||||
docker-compose -v
|
docker-compose -v
|
||||||
|
else
|
||||||
|
echo "❌ 无法检测 Docker Compose 版本。"
|
||||||
|
fi
|
||||||
|
|
||||||
echo "🎉 Docker 和 Docker Compose 已就绪!"
|
echo "🎉 Docker 和 Docker Compose 已就绪!"
|
||||||
|
|
||||||
echo "🚀 启动EasyAI"
|
echo "🚀 启动EasyAI"
|
||||||
|
# 对于新版 docker-compose-plugin,命令是 'docker compose'
|
||||||
|
if command -v docker &> /dev/null && docker compose version &> /dev/null; then
|
||||||
|
sudo docker compose pull && sudo docker compose up -d
|
||||||
|
else # 兼容旧版独立安装的 docker-compose
|
||||||
sudo docker-compose pull && sudo docker-compose up -d
|
sudo docker-compose pull && sudo docker-compose up -d
|
||||||
|
fi
|
||||||
echo "🎉EasyAI应用启动成功"
|
echo "🎉EasyAI应用启动成功"
|
Loading…
Reference in New Issue
Block a user