From 1e979cf0177406fd069c89cbcdae7dfbaf92f013 Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 20 Jan 2026 10:13:50 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E9=83=A8=E7=BD=B2=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=EF=BC=9A=E4=BD=BF=E7=94=A8=E7=A7=81=E6=9C=89=E9=95=9C?= =?UTF-8?q?=E5=83=8F=E4=BB=93=E5=BA=93=E5=92=8C=E6=A0=87=E5=87=86=E5=8C=96?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 核心改进: 1. 使用私有仓库基础镜像(极速拉取) - registry.boss160.cn/base/golang:1.25.6-alpine - registry.boss160.cn/base/alpine:3.19 2. 移除 Docker Compose 安装步骤(已在服务器永久安装) - 减少 51 行复杂逻辑 - 构建时间减少 10-60 秒 3. 移除文件复制步骤(configs 已在服务器部署目录) - 减少 20+ 行代码 - 简化维护流程 4. 极简化部署逻辑 - 只保留:拉取镜像 → 重启服务 → 显示状态 - 从 ~30 行减少到 7 行 效果: - 净减少 68 行代码 - 工作流清晰易懂 - 构建速度提升(基础镜像从内网拉取) - 维护成本大幅降低 --- .gitea/workflows/deploy.yaml | 78 +++--------------------------------- Dockerfile.api | 6 +-- Dockerfile.worker | 6 +-- 3 files changed, 11 insertions(+), 79 deletions(-) diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index 83b60ab..b2bec53 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -18,55 +18,6 @@ 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/ - - # 定义多个国内镜像源(按顺序尝试) - MIRRORS=( - "https://ghproxy.net/https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-linux-x86_64" - "https://gh-proxy.com/https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-linux-x86_64" - "https://ghps.cc/https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-linux-x86_64" - "https://github.moeyy.xyz/https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-linux-x86_64" - "https://mirror.ghproxy.com/https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-linux-x86_64" - ) - - DOWNLOADED=false - for MIRROR in "${MIRRORS[@]}"; do - echo "🔄 尝试: $(echo $MIRROR | cut -d'/' -f3)" - if curl -fSL --connect-timeout 15 --max-time 60 "$MIRROR" -o ~/.docker/cli-plugins/docker-compose 2>/dev/null; then - echo "✅ 下载成功" - DOWNLOADED=true - break - else - echo "❌ 失败,尝试下一个..." - fi - done - - # 如果所有国内镜像都失败,尝试官方源 - if [ "$DOWNLOADED" = false ]; then - echo "⚠️ 所有国内镜像失败,尝试官方源(可能较慢)..." - curl -fSL --connect-timeout 30 --max-time 300 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 . @@ -109,38 +60,19 @@ jobs: - name: 部署到本地(仅 main 分支) if: github.ref == 'refs/heads/main' run: | - # 确保部署目录存在 - mkdir -p ${{ env.DEPLOY_DIR }} - - # 复制必要的文件和目录到部署目录 - cp docker-compose.prod.yml ${{ env.DEPLOY_DIR }}/ - cp -r configs ${{ env.DEPLOY_DIR }}/ - mkdir -p ${{ env.DEPLOY_DIR }}/logs - cd ${{ env.DEPLOY_DIR }} - echo "📋 当前部署目录: $(pwd)" - echo "🔍 验证 Docker Compose..." - docker compose version - echo "📥 拉取最新镜像..." - docker compose -f docker-compose.prod.yml pull + docker compose pull - echo "🚀 执行滚动更新..." - docker compose -f docker-compose.prod.yml up -d --no-deps + echo "🚀 重启服务..." + docker compose up -d - echo "⏳ 等待服务健康检查..." + echo "⏳ 等待服务启动..." sleep 10 - 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 "🧹 清理悬空镜像..." - docker image prune -f - echo "✅ 部署完成!" - docker compose -f docker-compose.prod.yml ps + docker compose ps - name: 构建结果通知 if: always() diff --git a/Dockerfile.api b/Dockerfile.api index 0c6e6c7..d8a9844 100644 --- a/Dockerfile.api +++ b/Dockerfile.api @@ -1,9 +1,9 @@ # ================================ # 阶段 1: 构建阶段 # ================================ -FROM golang:1.25.6-alpine AS builder +FROM registry.boss160.cn/base/golang:1.25.6-alpine AS builder -# 使用国内镜像源加速(必须在所有 apk 命令前) +# 使用阿里云镜像源加速 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories # 设置工作目录 @@ -37,7 +37,7 @@ RUN go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate # ================================ # 阶段 2: 运行阶段 # ================================ -FROM alpine:3.19 +FROM registry.boss160.cn/base/alpine:3.19 # 使用阿里云镜像源加速 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories diff --git a/Dockerfile.worker b/Dockerfile.worker index 57341d9..cf328fb 100644 --- a/Dockerfile.worker +++ b/Dockerfile.worker @@ -1,9 +1,9 @@ # ================================ # 阶段 1: 构建阶段 # ================================ -FROM golang:1.25.6-alpine AS builder +FROM registry.boss160.cn/base/golang:1.25.6-alpine AS builder -# 使用国内镜像源加速(必须在所有 apk 命令前) +# 使用阿里云镜像源加速 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories # 设置工作目录 @@ -34,7 +34,7 @@ RUN GOOS=linux GOARCH=amd64 go build \ # ================================ # 阶段 2: 运行阶段 # ================================ -FROM alpine:3.19 +FROM registry.boss160.cn/base/alpine:3.19 # 使用阿里云镜像源加速 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories