|
|
|
@ -22,49 +22,60 @@ fi |
|
|
|
chmod +x /usr/local/bin/docker-compose |
|
|
|
fi |
|
|
|
|
|
|
|
# 更新Docker Buildx到最新版本 |
|
|
|
echo "更新Docker Buildx..." |
|
|
|
# 检查当前Buildx版本 |
|
|
|
buildx_version=$(docker buildx version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+' | head -1 || echo "0.0") |
|
|
|
echo "当前Buildx版本: $buildx_version" |
|
|
|
|
|
|
|
if [[ "$buildx_version" < "0.17" ]]; then |
|
|
|
echo "当前Buildx版本 $buildx_version 低于要求的0.17,正在强制升级..." |
|
|
|
|
|
|
|
# 1. 停止Docker服务 |
|
|
|
systemctl stop docker 2>/dev/null || true |
|
|
|
sleep 3 |
|
|
|
|
|
|
|
# 2. 卸载旧版本Buildx |
|
|
|
rm -rf ~/.docker/cli-plugins/docker-buildx 2>/dev/null || true |
|
|
|
rm -rf /usr/libexec/docker/cli-plugins/docker-buildx 2>/dev/null || true |
|
|
|
docker buildx uninstall 2>/dev/null || true |
|
|
|
sleep 2 |
|
|
|
|
|
|
|
# 3. 重新安装Docker服务 |
|
|
|
systemctl start docker 2>/dev/null || true |
|
|
|
sleep 5 |
|
|
|
|
|
|
|
# 4. 安装最新版本Buildx |
|
|
|
docker buildx install |
|
|
|
|
|
|
|
# 5. 再次重启Docker服务 |
|
|
|
systemctl restart docker 2>/dev/null || true |
|
|
|
sleep 5 |
|
|
|
|
|
|
|
# 6. 创建并使用默认构建器 |
|
|
|
docker buildx create --name mybuilder --driver docker-container --use 2>/dev/null || true |
|
|
|
fi |
|
|
|
# 安装或更新Docker Buildx |
|
|
|
echo "检查并安装Docker Buildx..." |
|
|
|
|
|
|
|
# 检查Buildx是否已安装 |
|
|
|
if ! docker buildx version &> /dev/null; then |
|
|
|
echo "Buildx未安装,正在安装..." |
|
|
|
|
|
|
|
# 1. 获取系统架构 |
|
|
|
ARCH=$(uname -m) |
|
|
|
if [ "$ARCH" = "x86_64" ]; then |
|
|
|
BUILDX_ARCH="amd64" |
|
|
|
elif [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then |
|
|
|
BUILDX_ARCH="arm64" |
|
|
|
else |
|
|
|
echo "错误: 不支持的系统架构 $ARCH" |
|
|
|
echo "将直接使用docker build替代docker-compose build..." |
|
|
|
export USE_ALTERNATE_BUILD="true" |
|
|
|
fi |
|
|
|
|
|
|
|
if [ -z "$USE_ALTERNATE_BUILD" ]; then |
|
|
|
# 2. 下载最新版本的Buildx |
|
|
|
BUILDX_VERSION=$(curl -s https://api.github.com/repos/docker/buildx/releases/latest | grep -o '"tag_name": "v[^"]*"' | sed 's/"tag_name": "v//' | sed 's/"//') |
|
|
|
echo "正在下载Buildx版本 $BUILDX_VERSION ($BUILDX_ARCH)..." |
|
|
|
|
|
|
|
# 再次验证Buildx版本 |
|
|
|
new_buildx_version=$(docker buildx version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+' | head -1 || echo "0.0") |
|
|
|
echo "升级后Buildx版本: $new_buildx_version" |
|
|
|
# 3. 创建插件目录 |
|
|
|
mkdir -p ~/.docker/cli-plugins |
|
|
|
|
|
|
|
# 如果Buildx版本仍然不足,尝试使用docker build替代docker-compose build |
|
|
|
if [[ "$new_buildx_version" < "0.17" ]]; then |
|
|
|
echo "警告: Buildx版本仍然低于0.17,将尝试使用替代方案构建镜像..." |
|
|
|
# 创建一个环境变量标记,后续使用 |
|
|
|
export USE_ALTERNATE_BUILD="true" |
|
|
|
# 4. 下载并安装Buildx |
|
|
|
curl -L "https://github.com/docker/buildx/releases/download/v$BUILDX_VERSION/buildx-v$BUILDX_VERSION.linux-$BUILDX_ARCH" -o ~/.docker/cli-plugins/docker-buildx |
|
|
|
|
|
|
|
# 5. 添加执行权限 |
|
|
|
chmod +x ~/.docker/cli-plugins/docker-buildx |
|
|
|
|
|
|
|
# 6. 验证安装 |
|
|
|
if docker buildx version &> /dev/null; then |
|
|
|
echo "Buildx安装成功!" |
|
|
|
else |
|
|
|
echo "警告: Buildx安装失败,将直接使用docker build替代docker-compose build..." |
|
|
|
export USE_ALTERNATE_BUILD="true" |
|
|
|
fi |
|
|
|
fi |
|
|
|
else |
|
|
|
# Buildx已安装,检查版本 |
|
|
|
buildx_version=$(docker buildx version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+' | head -1 || echo "0.0") |
|
|
|
echo "当前Buildx版本: $buildx_version" |
|
|
|
|
|
|
|
if [[ "$buildx_version" < "0.17" ]]; then |
|
|
|
echo "Buildx版本低于0.17,将直接使用docker build替代docker-compose build..." |
|
|
|
export USE_ALTERNATE_BUILD="true" |
|
|
|
fi |
|
|
|
fi |
|
|
|
|
|
|
|
if [[ "$USE_ALTERNATE_BUILD" == "true" ]]; then |
|
|
|
echo "将使用docker build直接构建镜像..." |
|
|
|
fi |
|
|
|
|
|
|
|
echo "Docker工具检查完成" |
|
|
|
|