修复:自动安装 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
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
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: 检出代码
|
- name: 检出代码
|
||||||
run: |
|
run: |
|
||||||
git clone https://git.boss160.cn/csxj2026/junhong_cmp_fiber.git .
|
git clone https://git.boss160.cn/csxj2026/junhong_cmp_fiber.git .
|
||||||
@@ -68,41 +99,28 @@ jobs:
|
|||||||
|
|
||||||
cd ${{ env.DEPLOY_DIR }}
|
cd ${{ env.DEPLOY_DIR }}
|
||||||
|
|
||||||
# 检查 docker compose 版本
|
echo "📋 当前部署目录: $(pwd)"
|
||||||
echo "检查 Docker Compose..."
|
echo "🔍 验证 Docker Compose..."
|
||||||
docker --version
|
docker compose version
|
||||||
docker compose version || echo "docker compose 不可用"
|
|
||||||
|
|
||||||
# 设置 COMPOSE 命令(兼容 V1 和 V2)
|
echo "📥 拉取最新镜像..."
|
||||||
if command -v docker-compose &> /dev/null; then
|
docker compose -f docker-compose.prod.yml pull
|
||||||
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 "拉取最新镜像..."
|
echo "🚀 执行滚动更新..."
|
||||||
$COMPOSE -f docker-compose.prod.yml pull
|
docker compose -f docker-compose.prod.yml up -d --no-deps
|
||||||
|
|
||||||
echo "执行滚动更新..."
|
echo "⏳ 等待服务健康检查..."
|
||||||
$COMPOSE -f docker-compose.prod.yml up -d --no-deps
|
|
||||||
|
|
||||||
echo "等待服务健康检查..."
|
|
||||||
sleep 10
|
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.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
|
docker images ${{ env.WORKER_IMAGE }} --format "{{.ID}}" | tail -n +4 | xargs -r docker rmi -f || true
|
||||||
|
|
||||||
echo "清理悬空镜像..."
|
echo "🧹 清理悬空镜像..."
|
||||||
docker image prune -f
|
docker image prune -f
|
||||||
|
|
||||||
echo "部署完成!"
|
echo "✅ 部署完成!"
|
||||||
$COMPOSE -f docker-compose.prod.yml ps
|
docker compose -f docker-compose.prod.yml ps
|
||||||
|
|
||||||
- name: 构建结果通知
|
- name: 构建结果通知
|
||||||
if: always()
|
if: always()
|
||||||
|
|||||||
Reference in New Issue
Block a user