From 7e9530fd56cedf95a4aa0508a77d757ff7944579 Mon Sep 17 00:00:00 2001 From: Marc 'risson' Schmitt Date: Mon, 27 Apr 2026 16:34:11 +0200 Subject: [PATCH] add container Signed-off-by: Marc 'risson' Schmitt --- lifecycle/container/Dockerfile | 2 - lifecycle/container/proxy.Dockerfile | 58 +++++++++++++++++----------- 2 files changed, 35 insertions(+), 25 deletions(-) diff --git a/lifecycle/container/Dockerfile b/lifecycle/container/Dockerfile index 06998ed28d..e4d3d9bcd5 100644 --- a/lifecycle/container/Dockerfile +++ b/lifecycle/container/Dockerfile @@ -101,8 +101,6 @@ RUN --mount=type=bind,target=rust-toolchain.toml,src=rust-toolchain.toml \ rustc --version && \ cargo --version -RUN cat /root/.rustup/settings.toml - # Stage: Download uv FROM ghcr.io/astral-sh/uv:0.11.5@sha256:555ac94f9a22e656fc5f2ce5dfee13b04e94d099e46bb8dd3a73ec7263f2e484 AS uv # Stage: Base python image diff --git a/lifecycle/container/proxy.Dockerfile b/lifecycle/container/proxy.Dockerfile index 1533fc39f6..9af6705c30 100644 --- a/lifecycle/container/proxy.Dockerfile +++ b/lifecycle/container/proxy.Dockerfile @@ -21,33 +21,45 @@ COPY web . RUN npm run build-proxy # Stage 2: Build -FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.2-trixie@sha256:4a7137ea573f79c86ae451ff05817ed762ef5597fcf732259e97abeb3108d873 AS builder +FROM ghcr.io/goauthentik/fips-debian:trixie-slim-fips@sha256:7726387c78b5787d2146868c2ccc8948a3591d0a5a6436f7780c8c28acc76341 AS builder -ARG TARGETOS ARG TARGETARCH ARG TARGETVARIANT -ARG GOOS=$TARGETOS -ARG GOARCH=$TARGETARCH - -WORKDIR /go/src/goauthentik.io - +ENV PATH="/root/.cargo/bin:$PATH" +SHELL ["/bin/sh", "-o", "pipefail", "-c"] +RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache RUN --mount=type=cache,id=apt-$TARGETARCH$TARGETVARIANT,sharing=locked,target=/var/cache/apt \ - dpkg --add-architecture arm64 && \ + --mount=type=bind,target=rust-toolchain.toml,src=rust-toolchain.toml \ apt-get update && \ - apt-get install -y --no-install-recommends crossbuild-essential-arm64 gcc-aarch64-linux-gnu + # Required for installing pip packages + apt-get install -y --no-install-recommends \ + # Build essentials + build-essential \ + # aws-lc deps + cmake clang golang && \ + curl https://sh.rustup.rs -sSf | sh -s -- -y --profile minimal --default-toolchain none && \ + rustup install && \ + rustup default "$(sed -n 's/channel = "\(.*\)"/\1/p' rust-toolchain.toml)" && \ + rustc --version && \ + cargo --version +# See https://github.com/aws/aws-lc-rs/issues/569 +ENV AWS_LC_FIPS_SYS_CC=clang -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 \ - go mod download - -COPY . . -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 \ - 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/proxy ./cmd/proxy +RUN --mount=type=bind,target=rust-toolchain.toml,src=rust-toolchain.toml \ + --mount=type=bind,target=Cargo.toml,src=Cargo.toml \ + --mount=type=bind,target=Cargo.lock,src=Cargo.lock \ + --mount=type=bind,target=.cargo/,src=.cargo/ \ + --mount=type=bind,target=src/,src=src/ \ + --mount=type=bind,target=packages/,src=packages/ \ + --mount=type=bind,target=authentik/lib/default.yml,src=authentik/lib/default.yml \ + # Required otherwise workspace discovery fails + --mount=type=bind,target=website/scripts/docsmg/,src=website/scripts/docsmg/ \ + --mount=type=cache,id=cargo-git-db-$TARGETARCH$TARGETVARIANT,target=/root/.cargo/git/db/ \ + --mount=type=cache,id=cargo-registry-$TARGETARCH$TARGETVARIANT,target=/root/.cargo/registry/ \ + --mount=type=cache,id=rust-target-$TARGETARCH$TARGETVARIANT,target=/build/target/ \ + cargo build --package authentik --no-default-features --features proxy --locked --release && \ + cp ./target/release/authentik /bin/authentik # Stage 3: Run FROM ghcr.io/goauthentik/fips-debian:trixie-slim-fips@sha256:7726387c78b5787d2146868c2ccc8948a3591d0a5a6436f7780c8c28acc76341 @@ -72,13 +84,13 @@ RUN apt-get update && \ apt-get clean && \ rm -rf /tmp/* /var/lib/apt/lists/* -COPY --from=builder /go/proxy / +COPY --from=builder /bin/authentik / COPY --from=web-builder /static/robots.txt /web/robots.txt COPY --from=web-builder /static/security.txt /web/security.txt COPY --from=web-builder /static/dist/ /web/dist/ COPY --from=web-builder /static/authentik/ /web/authentik/ -HEALTHCHECK --interval=5s --retries=20 --start-period=3s CMD [ "/proxy", "healthcheck" ] +HEALTHCHECK --interval=5s --retries=20 --start-period=3s CMD [ "/authentik", "healthcheck" ] EXPOSE 9000 9300 9443 @@ -87,4 +99,4 @@ USER 1000 ENV TMPDIR=/dev/shm/ \ GOFIPS=1 -ENTRYPOINT ["/proxy"] +ENTRYPOINT ["/authentik", "proxy"]