diff --git a/lifecycle/container/Dockerfile b/lifecycle/container/Dockerfile index a84f41912c..4e465aa6ed 100644 --- a/lifecycle/container/Dockerfile +++ b/lifecycle/container/Dockerfile @@ -29,13 +29,22 @@ RUN npm run build && \ npm run build:sfe # Stage: Build go proxy -FROM docker.io/library/golang:1.26.2-trixie@sha256:982ae929f9a74083a242c6e25d19d7d9ed78c6e97fab639a119e90707ba819e2 AS go-builder +FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.2-trixie@sha256:982ae929f9a74083a242c6e25d19d7d9ed78c6e97fab639a119e90707ba819e2 AS go-builder +ARG TARGETOS ARG TARGETARCH ARG TARGETVARIANT +ARG GOOS=$TARGETOS +ARG GOARCH=$TARGETARCH + WORKDIR /go/src/goauthentik.io +RUN --mount=type=cache,id=apt-$TARGETARCH$TARGETVARIANT,sharing=locked,target=/var/cache/apt \ + dpkg --add-architecture arm64 && \ + apt-get update && \ + apt-get install -y --no-install-recommends crossbuild-essential-arm64 gcc-aarch64-linux-gnu + RUN --mount=type=bind,target=/go/src/goauthentik.io/go.mod,src=./go.mod \ --mount=type=bind,target=/go/src/goauthentik.io/go.sum,src=./go.sum \ --mount=type=cache,target=/go/pkg/mod \ @@ -53,7 +62,9 @@ COPY ./packages/client-go /go/src/goauthentik.io/packages/client-go RUN --mount=type=cache,sharing=locked,target=/go/pkg/mod \ --mount=type=cache,id=go-build-$TARGETARCH$TARGETVARIANT,sharing=locked,target=/root/.cache/go-build \ - CGO_ENABLED=1 GOFIPS140=latest go build -o /go/authentik-server ./cmd/server + if [ "$TARGETARCH" = "arm64" ]; then export CC=aarch64-linux-gnu-gcc && export CC_FOR_TARGET=gcc-aarch64-linux-gnu; fi && \ + CGO_ENABLED=1 GOFIPS140=latest GOARM="${TARGETVARIANT#v}" \ + go build -o /go/authentik-server ./cmd/server # Stage: MaxMind GeoIP FROM --platform=${BUILDPLATFORM} ghcr.io/maxmind/geoipupdate:v7.1.1@sha256:faecdca22579730ab0b7dea5aa9af350bb3c93cb9d39845c173639ead30346d2 AS geoip