|
|
|
@ -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 "启动服务..." |
|
|
|
|