Skip to content

Commit 2cd2e6a

Browse files
authored
fix(docker): cross-compile multi-arch instead of emulating (#12)
go build ran under QEMU for the arm64 leg, taking 20+ min. Build natively on $BUILDPLATFORM and cross-compile via GOOS/GOARCH (CGO already disabled), so multi-arch builds are fast for both CI and releases.
1 parent ed14d85 commit 2cd2e6a

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

Dockerfile

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1-
FROM golang:1.26-alpine AS builder
1+
# Cross-compile from the native build platform to the target platform so multi-arch
2+
# builds don't run `go build` under slow QEMU emulation.
3+
FROM --platform=$BUILDPLATFORM golang:1.26-alpine AS builder
4+
ARG TARGETOS
5+
ARG TARGETARCH
26
WORKDIR /app
37
COPY go.mod go.sum ./
48
RUN go mod download
59
COPY . .
6-
RUN CGO_ENABLED=0 go build -o /karpenter-provider-hetzner ./cmd/controller
10+
RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o /karpenter-provider-hetzner ./cmd/controller
711

812
FROM gcr.io/distroless/static-debian12:nonroot
913
COPY --from=builder /karpenter-provider-hetzner /karpenter-provider-hetzner

0 commit comments

Comments
 (0)