github.com/ironcore-dev/gardener-extension-provider-ironcore@v0.3.2-0.20240314231816-8336447fb9a0/Dockerfile (about) 1 # Build the manager binary 2 FROM --platform=$BUILDPLATFORM golang:1.22.1 as builder 3 4 ARG GOARCH='' 5 6 WORKDIR /workspace 7 # Copy the Go Modules manifests 8 COPY go.mod go.mod 9 COPY go.sum go.sum 10 # cache deps before building and copying source so that we don't need to re-download as much 11 # and so that source changes don't invalidate our downloaded layer 12 RUN --mount=type=cache,target=/root/.cache/go-build \ 13 --mount=type=cache,target=/go/pkg \ 14 go mod download 15 16 # Copy the go source 17 COPY cmd/ cmd/ 18 COPY pkg/ pkg/ 19 COPY charts/ charts/ 20 COPY imagevector/ imagevector/ 21 22 ARG TARGETOS 23 ARG TARGETARCH 24 25 # Build 26 RUN --mount=type=cache,target=/root/.cache/go-build \ 27 --mount=type=cache,target=/go/pkg \ 28 CGO_ENABLED=0 GOOS=linux GOARCH=${GOARCH} go build -a -o gardener-extension-provider-ironcore ./cmd/gardener-extension-provider-ironcore/main.go && \ 29 CGO_ENABLED=0 GOOS=linux GOARCH=${GOARCH} go build -a -o gardener-extension-admission-ironcore ./cmd/gardener-extension-admission-ironcore/main.go 30 31 # Use distroless as minimal base image to package the manager binary 32 # Refer to https://github.com/GoogleContainerTools/distroless for more details 33 FROM gcr.io/distroless/static:nonroot AS gardener-extension-provider-ironcore 34 WORKDIR / 35 COPY charts /charts 36 COPY --from=builder /workspace/gardener-extension-provider-ironcore /gardener-extension-provider-ironcore 37 USER 65532:65532 38 39 ENTRYPOINT ["/gardener-extension-provider-ironcore"] 40 41 FROM gcr.io/distroless/static:nonroot AS gardener-extension-admission-ironcore 42 WORKDIR / 43 COPY charts /charts 44 COPY --from=builder /workspace/gardener-extension-admission-ironcore /gardener-extension-admission-ironcore 45 USER 65532:65532 46 47 ENTRYPOINT ["/gardener-extension-admission-ironcore"]