2021-01-30 01:28:07 +05:30
|
|
|
# Multi-stage docker build
|
|
|
|
# Build stage
|
2022-06-01 15:35:02 +03:00
|
|
|
FROM --platform=${BUILDPLATFORM} golang@sha256:724abf4dd44985d060f7aa91af5211eb2052491424bd497ba3ddc31f7cee969d AS base
|
|
|
|
WORKDIR /src
|
2021-01-30 01:28:07 +05:30
|
|
|
LABEL maintainer="Kyverno"
|
|
|
|
|
2022-06-01 15:35:02 +03:00
|
|
|
COPY go.* .
|
|
|
|
|
|
|
|
RUN --mount=type=cache,target=/go/pkg/mod \
|
|
|
|
go mod download
|
|
|
|
|
|
|
|
FROM --platform=${BUILDPLATFORM} tonistiigi/xx:1.1.1@sha256:23ca08d120366b31d1d7fad29283181f063b0b43879e1f93c045ca5b548868e9 AS xx
|
|
|
|
|
|
|
|
FROM base AS builder
|
|
|
|
|
2021-01-30 01:28:07 +05:30
|
|
|
# LD_FLAGS is passed as argument from Makefile. It will be empty, if no argument passed
|
|
|
|
ARG LD_FLAGS
|
2021-02-19 07:39:01 +05:30
|
|
|
ARG TARGETPLATFORM
|
2021-01-30 01:28:07 +05:30
|
|
|
|
2022-06-01 15:35:02 +03:00
|
|
|
COPY --from=xx / /
|
2021-02-19 07:39:01 +05:30
|
|
|
|
2022-06-01 15:35:02 +03:00
|
|
|
RUN --mount=type=bind,target=. \
|
|
|
|
--mount=type=cache,target=/root/.cache/go-build \
|
|
|
|
--mount=type=cache,target=/go/pkg/mod \
|
|
|
|
CGO_ENABLED=0 xx-go build -o /output/kyverno -ldflags="${LD_FLAGS}" -v ./cmd/cli/kubectl-kyverno/
|
2021-01-30 01:28:07 +05:30
|
|
|
|
|
|
|
# Packaging stage
|
2022-07-21 09:37:56 +03:00
|
|
|
FROM ghcr.io/distroless/static:latest
|
2021-01-30 01:28:07 +05:30
|
|
|
|
|
|
|
LABEL maintainer="Kyverno"
|
|
|
|
|
|
|
|
COPY --from=builder /output/kyverno /
|
|
|
|
|
|
|
|
ENTRYPOINT ["./kyverno"]
|