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..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 @@ -14,11 +14,13 @@ WORKDIR /app ARG KOMPANION_VERSION=local ENV KOMPANION_VERSION=$KOMPANION_VERSION -RUN GOOS=linux GOARCH=amd64 \ - go build -ldflags "-X main.Version=$KOMPANION_VERSION" -tags migrate -o /bin/app ./cmd/app +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 +FROM --platform=${TARGETPLATFORM} golang:1.22.5-alpine ENV GIN_MODE=release WORKDIR /