From d7da10c61bbb3a9010d2930a986a1f92779705a3 Mon Sep 17 00:00:00 2001 From: MatrixSeven Date: Mon, 16 Mar 2026 10:06:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0Docker=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E9=85=8D=E7=BD=AE=EF=BC=8C=E6=94=AF=E6=8C=81=E5=A4=9A?= =?UTF-8?q?=E6=9E=B6=E6=9E=84=E6=9E=84=E5=BB=BA=EF=BC=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?Dockerfile=E4=BB=A5=E9=80=82=E5=BA=94=E4=B8=8D=E5=90=8C?= =?UTF-8?q?=E7=9B=AE=E6=A0=87=E6=9E=B6=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/docker-publish.yml | 10 ++++++++-- Dockerfile | 11 +++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index a6bcbc7..4fd1533 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -1,5 +1,5 @@ -name: 🐳 Build and Push Docker Image (AMD64) +name: 🐳 Build and Push Docker Image (Multi-Arch) on: # 手动触发 @@ -57,6 +57,11 @@ jobs: type=raw,value=latest,enable={{is_default_branch}} type=raw,value=${{ inputs.version }},enable=${{ github.event_name == 'workflow_dispatch' }} + - name: 🔧 Set up QEMU + uses: docker/setup-qemu-action@v3 + with: + platforms: arm64 + - name: 🔧 Set up Docker Buildx uses: docker/setup-buildx-action@v3 with: @@ -76,9 +81,10 @@ jobs: - name: 🏗️ Set build platform id: platforms run: | - echo "platforms=linux/amd64" >> $GITHUB_OUTPUT + echo "platforms=linux/amd64,linux/arm64" >> $GITHUB_OUTPUT - name: 🐳 Build and push Docker image + id: build uses: docker/build-push-action@v5 with: context: . diff --git a/Dockerfile b/Dockerfile index 7025563..606a661 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # ============================================== -# AMD64 Dockerfile - 基于 build-fullstack.sh 流程 +# Multi-Arch Dockerfile - 基于 build-fullstack.sh 流程 # ============================================== # 前端构建阶段 @@ -35,8 +35,11 @@ RUN apk add --no-cache git ca-certificates tzdata ENV GOPROXY=https://proxy.golang.org,direct ENV CGO_ENABLED=0 -ENV GOOS=linux -ENV GOARCH=amd64 + +ARG TARGETOS +ARG TARGETARCH +ENV GOOS=${TARGETOS} +ENV GOARCH=${TARGETARCH} WORKDIR /app @@ -50,7 +53,7 @@ RUN go mod download # 拷贝前端构建结果 COPY --from=frontend-builder /app/chuan-next/out ./internal/web/frontend/ -# 构建 Go 应用 - AMD64 架构(模拟 build-fullstack.sh 的 build_backend 函数) +# 构建 Go 应用 - 按目标架构编译(模拟 build-fullstack.sh 的 build_backend 函数) RUN go build -ldflags='-s -w -extldflags '-static'' -o server ./cmd # ==============================================