generated from kyma-project/template-repository
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
67 lines (52 loc) · 2.73 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# Build the manager binary
FROM golang:1.22.1-alpine as builder
ARG TARGETOS
ARG TARGETARCH
ARG V_KORIFI="0.11.2"
WORKDIR /workspace
# Copy the Go Modules manifests
COPY go.mod go.mod
COPY go.sum go.sum
# Copy the go source
COPY main.go main.go
COPY api api/
COPY controllers controllers/
# cache deps before building and copying source so that we don't need to re-download as much
# and so that source changes don't invalidate our downloaded layer
RUN go mod download
RUN GO111MODULE=on go get github.com/mikefarah/yq/v3
RUN apk add curl
ARG TAG_default_tag=from_dockerfile
# Build
# the GOARCH has not a default value to allow the binary be built according to the host where the command
# was called. For example, if we call make docker-build in a local env which has the Apple Silicon M1 SO
# the docker BUILDPLATFORM arg will be linux/arm64 when for Apple x86 it will be linux/amd64. Therefore,
# by leaving it empty we can ensure that the container and binary shipped on it will have the same platform.
RUN CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} go build -ldflags="-X 'main.buildVersion=${TAG_default_tag}'" -a -o manager main.go
ENV VERSION_SERVICEBINDING=0.4.0
ENV VERSION_KPACK=0.13.4
ENV VERSION_CERT_MANAGER=1.14.6
ENV VERSION_GATEWAY_API=1.1.0
ENV VERSION_TWUNI=2.2.3
ENV VERSION_KORIFI=0.12.0
WORKDIR /workspace/module-data/servicebinding
RUN curl -OLf https://github.com/servicebinding/runtime/releases/download/v$VERSION_SERVICEBINDING/servicebinding-runtime-v$VERSION_SERVICEBINDING.yaml
RUN curl -OLf https://github.com/servicebinding/runtime/releases/download/v$VERSION_SERVICEBINDING/servicebinding-workloadresourcemappings-v$VERSION_SERVICEBINDING.yaml
WORKDIR /workspace/module-data/kpack
RUN curl -OLf https://github.com/buildpacks-community/kpack/releases/download/v$VERSION_KPACK/release-$VERSION_KPACK.yaml
WORKDIR /workspace/module-data/cert-manager
RUN curl -OLf https://github.com/cert-manager/cert-manager/releases/download/v$VERSION_CERT_MANAGER/cert-manager.yaml
WORKDIR /workspace/module-data/gateway-api
RUN curl -OLf https://github.com/kubernetes-sigs/gateway-api/releases/download/v$VERSION_GATEWAY_API/experimental-install.yaml
WORKDIR /workspace/module-data/korifi
COPY .korifi/release-${V_KORIFI}/values.yaml values-${V_KORIFI}.yaml
COPY .korifi/release-${V_KORIFI}/korifi-helm.tar.gz korifi-helm-${V_KORIFI}.tar.gz
# Use distroless as minimal base image to package the manager binary
# Refer to https://github.com/GoogleContainerTools/distroless for more details
FROM gcr.io/distroless/static:nonroot
WORKDIR /
COPY --from=builder /workspace/manager .
COPY --from=builder --chown=65532:65532 /workspace/module-data module-data/
COPY --chown=65532:65532 module-data module-data/
USER 65532:65532
ENTRYPOINT ["/manager"]