Browse Source

修复部署脚本:强制升级Buildx和添加替代构建方案

pull/2/head
SwTt29 2 months ago
parent
commit
f0065ed73e
  1. 59
      deploy.sh

59
deploy.sh

@ -25,23 +25,47 @@ fi
# 更新Docker Buildx到最新版本
echo "更新Docker Buildx..."
# 检查当前Buildx版本
buildx_version=$(docker buildx version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+' | head -1)
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,正在升级..."
# 卸载旧版本
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
# 重启Docker服务以应用更改
# 5. 再次重启Docker服务
systemctl restart docker 2>/dev/null || true
# 等待Docker重启
sleep 5
# 创建并使用默认构建器
docker buildx create --name mybuilder --use 2>/dev/null || true
# 6. 创建并使用默认构建器
docker buildx create --name mybuilder --driver docker-container --use 2>/dev/null || true
fi
# 再次验证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"
# 如果Buildx版本仍然不足,尝试使用docker build替代docker-compose build
if [[ "$new_buildx_version" < "0.17" ]]; then
echo "警告: Buildx版本仍然低于0.17,将尝试使用替代方案构建镜像..."
# 创建一个环境变量标记,后续使用
export USE_ALTERNATE_BUILD="true"
fi
# 验证Buildx版本
new_buildx_version=$(docker buildx version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+' | head -1)
echo "当前Buildx版本: $new_buildx_version"
echo "Docker工具检查完成"
@ -107,7 +131,20 @@ fi
# 构建Docker镜像
echo "构建Docker镜像..."
if [[ "$USE_ALTERNATE_BUILD" == "true" ]]; then
# 使用docker build替代docker-compose build
echo "使用docker build直接构建镜像..."
docker build -t project_app-app . --no-cache
if [ $? -eq 0 ]; then
echo "镜像构建成功!"
else
echo "错误: 镜像构建失败!"
exit 1
fi
else
# 使用正常的docker-compose build
docker-compose build
fi
# 启动服务
echo "启动服务..."

Loading…
Cancel
Save