root: Improve multi arch Docker image build speed (#7355)
* Improve multi arch Docker image build speed Use only host architecture for GeoIP database update and for Go cross-compilation * Speedup Go multi-arch compilation for other images * Speedup multi-arch ldap image build
This commit is contained in:
		
							
								
								
									
										13
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								Dockerfile
									
									
									
									
									
								
							@ -35,7 +35,14 @@ COPY ./gen-ts-api /work/web/node_modules/@goauthentik/api
 | 
			
		||||
RUN npm run build
 | 
			
		||||
 | 
			
		||||
# Stage 3: Build go proxy
 | 
			
		||||
FROM docker.io/golang:1.21.3-bookworm AS go-builder
 | 
			
		||||
FROM --platform=${BUILDPLATFORM} docker.io/golang:1.21.3-bookworm AS go-builder
 | 
			
		||||
 | 
			
		||||
ARG TARGETOS
 | 
			
		||||
ARG TARGETARCH
 | 
			
		||||
ARG TARGETVARIANT
 | 
			
		||||
 | 
			
		||||
ARG GOOS=$TARGETOS
 | 
			
		||||
ARG GOARCH=$TARGETARCH
 | 
			
		||||
 | 
			
		||||
WORKDIR /go/src/goauthentik.io
 | 
			
		||||
 | 
			
		||||
@ -57,10 +64,10 @@ ENV CGO_ENABLED=0
 | 
			
		||||
 | 
			
		||||
RUN --mount=type=cache,target=/go/pkg/mod \
 | 
			
		||||
    --mount=type=cache,target=/root/.cache/go-build \
 | 
			
		||||
    go build -o /go/authentik ./cmd/server
 | 
			
		||||
    GOARM="${TARGETVARIANT#v}" go build -o /go/authentik ./cmd/server
 | 
			
		||||
 | 
			
		||||
# Stage 4: MaxMind GeoIP
 | 
			
		||||
FROM ghcr.io/maxmind/geoipupdate:v6.0 as geoip
 | 
			
		||||
FROM --platform=${BUILDPLATFORM} ghcr.io/maxmind/geoipupdate:v6.0 as geoip
 | 
			
		||||
 | 
			
		||||
ENV GEOIPUPDATE_EDITION_IDS="GeoLite2-City"
 | 
			
		||||
ENV GEOIPUPDATE_VERBOSE="true"
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,12 @@
 | 
			
		||||
# Stage 1: Build
 | 
			
		||||
FROM docker.io/golang:1.21.3-bookworm AS builder
 | 
			
		||||
FROM --platform=${BUILDPLATFORM} docker.io/golang:1.21.3-bookworm AS builder
 | 
			
		||||
 | 
			
		||||
ARG TARGETOS
 | 
			
		||||
ARG TARGETARCH
 | 
			
		||||
ARG TARGETVARIANT
 | 
			
		||||
 | 
			
		||||
ARG GOOS=$TARGETOS
 | 
			
		||||
ARG GOARCH=$TARGETARCH
 | 
			
		||||
 | 
			
		||||
WORKDIR /go/src/goauthentik.io
 | 
			
		||||
 | 
			
		||||
@ -13,7 +20,7 @@ ENV CGO_ENABLED=0
 | 
			
		||||
COPY . .
 | 
			
		||||
RUN --mount=type=cache,target=/go/pkg/mod \
 | 
			
		||||
    --mount=type=cache,target=/root/.cache/go-build \
 | 
			
		||||
    go build -o /go/ldap ./cmd/ldap
 | 
			
		||||
    GOARM="${TARGETVARIANT#v}" go build -o /go/ldap ./cmd/ldap
 | 
			
		||||
 | 
			
		||||
# Stage 2: Run
 | 
			
		||||
FROM gcr.io/distroless/static-debian11:debug
 | 
			
		||||
 | 
			
		||||
@ -15,7 +15,14 @@ COPY web .
 | 
			
		||||
RUN npm run build-proxy
 | 
			
		||||
 | 
			
		||||
# Stage 2: Build
 | 
			
		||||
FROM docker.io/golang:1.21.3-bookworm AS builder
 | 
			
		||||
FROM --platform=${BUILDPLATFORM} docker.io/golang:1.21.3-bookworm AS builder
 | 
			
		||||
 | 
			
		||||
ARG TARGETOS
 | 
			
		||||
ARG TARGETARCH
 | 
			
		||||
ARG TARGETVARIANT
 | 
			
		||||
 | 
			
		||||
ARG GOOS=$TARGETOS
 | 
			
		||||
ARG GOARCH=$TARGETARCH
 | 
			
		||||
 | 
			
		||||
WORKDIR /go/src/goauthentik.io
 | 
			
		||||
 | 
			
		||||
@ -29,7 +36,7 @@ ENV CGO_ENABLED=0
 | 
			
		||||
COPY . .
 | 
			
		||||
RUN --mount=type=cache,target=/go/pkg/mod \
 | 
			
		||||
    --mount=type=cache,target=/root/.cache/go-build \
 | 
			
		||||
    go build -o /go/proxy ./cmd/proxy
 | 
			
		||||
    GOARM="${TARGETVARIANT#v}" go build -o /go/proxy ./cmd/proxy
 | 
			
		||||
 | 
			
		||||
# Stage 3: Run
 | 
			
		||||
FROM gcr.io/distroless/static-debian11:debug
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,12 @@
 | 
			
		||||
# Stage 1: Build
 | 
			
		||||
FROM docker.io/golang:1.21.3-bookworm AS builder
 | 
			
		||||
FROM --platform=${BUILDPLATFORM} docker.io/golang:1.21.3-bookworm AS builder
 | 
			
		||||
 | 
			
		||||
ARG TARGETOS
 | 
			
		||||
ARG TARGETARCH
 | 
			
		||||
ARG TARGETVARIANT
 | 
			
		||||
 | 
			
		||||
ARG GOOS=$TARGETOS
 | 
			
		||||
ARG GOARCH=$TARGETARCH
 | 
			
		||||
 | 
			
		||||
WORKDIR /go/src/goauthentik.io
 | 
			
		||||
 | 
			
		||||
@ -13,7 +20,7 @@ ENV CGO_ENABLED=0
 | 
			
		||||
COPY . .
 | 
			
		||||
RUN --mount=type=cache,target=/go/pkg/mod \
 | 
			
		||||
    --mount=type=cache,target=/root/.cache/go-build \
 | 
			
		||||
    go build -o /go/radius ./cmd/radius
 | 
			
		||||
    GOARM="${TARGETVARIANT#v}" go build -o /go/radius ./cmd/radius
 | 
			
		||||
 | 
			
		||||
# Stage 2: Run
 | 
			
		||||
FROM gcr.io/distroless/static-debian11:debug
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user