修复:自动安装 Docker Compose 插件确保部署成功
Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 12s
Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 12s
- 在工作流开始时检查并安装 Docker Compose 插件 - 优先使用国内镜像(ghproxy.com)加速下载 - 失败时自动回退到官方 GitHub 源 - 简化部署步骤逻辑,移除冗余的版本检测 - 添加 emoji 标记让日志更清晰易读 这确保 Runner 环境中始终有可用的 docker compose 命令
This commit is contained in:
@@ -18,6 +18,37 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: 安装 Docker Compose 插件
|
||||
run: |
|
||||
# 检查是否已安装
|
||||
if docker compose version &> /dev/null; then
|
||||
echo "✅ Docker Compose 已安装"
|
||||
docker compose version
|
||||
else
|
||||
echo "📦 安装 Docker Compose 插件..."
|
||||
# 创建插件目录
|
||||
mkdir -p ~/.docker/cli-plugins/
|
||||
|
||||
# 尝试从国内镜像下载(更快)
|
||||
echo "尝试从国内镜像下载..."
|
||||
if curl -fSL --connect-timeout 10 https://mirror.ghproxy.com/https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose 2>/dev/null; then
|
||||
echo "✅ 从国内镜像下载成功"
|
||||
else
|
||||
echo "⚠️ 国内镜像失败,尝试官方源..."
|
||||
curl -fSL https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
|
||||
fi
|
||||
|
||||
chmod +x ~/.docker/cli-plugins/docker-compose
|
||||
|
||||
# 验证安装
|
||||
if docker compose version; then
|
||||
echo "✅ Docker Compose 安装成功"
|
||||
else
|
||||
echo "❌ Docker Compose 安装失败"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
- name: 检出代码
|
||||
run: |
|
||||
git clone https://git.boss160.cn/csxj2026/junhong_cmp_fiber.git .
|
||||
@@ -68,41 +99,28 @@ jobs:
|
||||
|
||||
cd ${{ env.DEPLOY_DIR }}
|
||||
|
||||
# 检查 docker compose 版本
|
||||
echo "检查 Docker Compose..."
|
||||
docker --version
|
||||
docker compose version || echo "docker compose 不可用"
|
||||
echo "📋 当前部署目录: $(pwd)"
|
||||
echo "🔍 验证 Docker Compose..."
|
||||
docker compose version
|
||||
|
||||
# 设置 COMPOSE 命令(兼容 V1 和 V2)
|
||||
if command -v docker-compose &> /dev/null; then
|
||||
COMPOSE="docker-compose"
|
||||
echo "使用 docker-compose (V1)"
|
||||
elif docker compose version &> /dev/null; then
|
||||
COMPOSE="docker compose"
|
||||
echo "使用 docker compose (V2)"
|
||||
else
|
||||
echo "错误: 未找到 docker-compose 或 docker compose"
|
||||
exit 1
|
||||
fi
|
||||
echo "📥 拉取最新镜像..."
|
||||
docker compose -f docker-compose.prod.yml pull
|
||||
|
||||
echo "拉取最新镜像..."
|
||||
$COMPOSE -f docker-compose.prod.yml pull
|
||||
echo "🚀 执行滚动更新..."
|
||||
docker compose -f docker-compose.prod.yml up -d --no-deps
|
||||
|
||||
echo "执行滚动更新..."
|
||||
$COMPOSE -f docker-compose.prod.yml up -d --no-deps
|
||||
|
||||
echo "等待服务健康检查..."
|
||||
echo "⏳ 等待服务健康检查..."
|
||||
sleep 10
|
||||
|
||||
echo "清理旧镜像(保留最近 3 个版本)..."
|
||||
echo "🧹 清理旧镜像(保留最近 3 个版本)..."
|
||||
docker images ${{ env.API_IMAGE }} --format "{{.ID}}" | tail -n +4 | xargs -r docker rmi -f || true
|
||||
docker images ${{ env.WORKER_IMAGE }} --format "{{.ID}}" | tail -n +4 | xargs -r docker rmi -f || true
|
||||
|
||||
echo "清理悬空镜像..."
|
||||
echo "🧹 清理悬空镜像..."
|
||||
docker image prune -f
|
||||
|
||||
echo "部署完成!"
|
||||
$COMPOSE -f docker-compose.prod.yml ps
|
||||
echo "✅ 部署完成!"
|
||||
docker compose -f docker-compose.prod.yml ps
|
||||
|
||||
- name: 构建结果通知
|
||||
if: always()
|
||||
|
||||
Reference in New Issue
Block a user