diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 0fe3a82a..547e8e6a 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -38,10 +38,9 @@ jobs: username: ${{ secrets.ALIYUN_USERNAME }} password: ${{ secrets.ALIYUN_PASSWORD }} - - name: Build and push + - name: Build and push multi-arch image run: | - docker build -t ${{env.REGISTRY}}/${{env.IMAGE_NAME}}:${{env.IMAGE_TAG}} . - docker push ${{env.REGISTRY}}/${{env.IMAGE_NAME}}:${{env.IMAGE_TAG}} + docker buildx build --platform linux/amd64,linux/arm64 -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} --push . - name: Set up SSH key run: | diff --git a/Dockerfile b/Dockerfile index 414298e9..2eeb91df 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.22.4-alpine3.20 AS builder +FROM --platform=$BUILDPLATFORM golang:1.22.4-alpine3.20 AS builder WORKDIR /app COPY . . @@ -6,7 +6,8 @@ COPY . . ENV GO111MODULE=on GOPROXY=https://goproxy.cn,direct RUN go mod download -RUN CGO_ENABLED=0 go build -ldflags="-w -s" -o pcm-core-api +# 使用 GOOS 和 GOARCH 环境变量来构建不同架构的二进制文件 +RUN CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -ldflags="-w -s" -o pcm-core-api FROM alpine:latest