From 3ab5e846760e420f22a7767a80569ff183c04237 Mon Sep 17 00:00:00 2001 From: kongfang Date: Wed, 10 Sep 2025 15:21:12 +0800 Subject: [PATCH 1/2] support build arm64 docker image --- .github/workflows/publish.yml | 1 + Dockerfile | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 36680c1..bf88687 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -38,6 +38,7 @@ jobs: uses: docker/build-push-action@v4 with: context: . + platforms: linux/amd64,linux/arm64 build-args: | KOMPANION_VERSION=${{ steps.get_tag.outputs.TAG }} push: true diff --git a/Dockerfile b/Dockerfile index 94813f7..415f1bd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,9 +14,11 @@ WORKDIR /app ARG KOMPANION_VERSION=local ENV KOMPANION_VERSION=$KOMPANION_VERSION -RUN GOOS=linux GOARCH=amd64 \ +ARG TARGETARCH +RUN GOOS=linux GOARCH=${TARGETARCH:-amd64} \ go build -ldflags "-X main.Version=$KOMPANION_VERSION" -tags migrate -o /bin/app ./cmd/app + # Step 3: Final FROM golang:1.22.5-alpine ENV GIN_MODE=release From 1570d0410990ff4eccffdb2da370b5629458d5d8 Mon Sep 17 00:00:00 2001 From: kongfang Date: Tue, 16 Sep 2025 11:56:41 +0800 Subject: [PATCH 2/2] dockerfile: use golang cross arch build --- Dockerfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 415f1bd..6da037c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,11 @@ # Step 1: Modules caching -FROM golang:1.22.5-alpine as modules +FROM --platform=${BUILDPLATFORM} golang:1.22.5-alpine as modules COPY go.mod go.sum /modules/ WORKDIR /modules RUN go mod download # Step 2: Builder -FROM golang:1.22.5-alpine as builder +FROM --platform=${BUILDPLATFORM} golang:1.22.5-alpine as builder RUN apk add --update gcc musl-dev COPY --from=modules /go/pkg /go/pkg COPY . /app @@ -16,11 +16,11 @@ ENV KOMPANION_VERSION=$KOMPANION_VERSION ARG TARGETARCH RUN GOOS=linux GOARCH=${TARGETARCH:-amd64} \ - go build -ldflags "-X main.Version=$KOMPANION_VERSION" -tags migrate -o /bin/app ./cmd/app + go build -ldflags "-X main.Version=$KOMPANION_VERSION" -tags migrate -o /bin/app ./cmd/app # Step 3: Final -FROM golang:1.22.5-alpine +FROM --platform=${TARGETPLATFORM} golang:1.22.5-alpine ENV GIN_MODE=release WORKDIR /