From cc9bda4fe5e8b214cdb81b8a988bdc726a42eed2 Mon Sep 17 00:00:00 2001 From: "naman.gupta" Date: Mon, 27 Nov 2023 10:23:16 +0530 Subject: [PATCH] Adding Dockerfile to create the image. Adding Dockerfile to create the image. Change-Id: Ia26092f778e8adc24544181e171d684c377483ba Signed-off-by: naman.gupta --- depRicKubernetesOperator/Dockerfile | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/depRicKubernetesOperator/Dockerfile b/depRicKubernetesOperator/Dockerfile index e69de29..e0309e2 100644 --- a/depRicKubernetesOperator/Dockerfile +++ b/depRicKubernetesOperator/Dockerfile @@ -0,0 +1,33 @@ +# Build the manager binary +FROM golang:1.20 as builder +ARG TARGETOS +ARG TARGETARCH + +WORKDIR /workspace +# Copy the Go Modules manifests +COPY go.mod go.mod +COPY go.sum go.sum +# 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 + +# Copy the go source +COPY cmd/main.go cmd/main.go +COPY api/ api/ +COPY internal/controller/ internal/controller/ + +# 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 -a -o manager cmd/main.go + +# 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 . +USER 65532:65532 + +ENTRYPOINT ["/manager"] -- 2.16.6