Update Docker file to install dependencies and build

This commit is contained in:
Volodymyr Zotov
2025-05-30 14:52:41 -05:00
parent f88ea6696b
commit a432b42814

View File

@@ -1,5 +1,5 @@
# Build the manager binary # Build the manager binary
FROM golang:1.21 as builder FROM golang:1.22 as builder
ARG TARGETOS ARG TARGETOS
ARG TARGETARCH ARG TARGETARCH
@@ -8,13 +8,15 @@ WORKDIR /workspace
COPY go.mod go.mod COPY go.mod go.mod
COPY go.sum go.sum COPY go.sum go.sum
# Download dependencies
RUN go mod download
# Copy the go source # Copy the go source
COPY cmd/main.go cmd/main.go COPY cmd/main.go cmd/main.go
COPY api/ api/ COPY api/ api/
COPY internal/controller/ internal/controller/ COPY internal/controller/ internal/controller/
COPY pkg/ pkg/ COPY pkg/ pkg/
COPY version/ version/ COPY version/ version/
COPY vendor/ vendor/
# Build # Build
# the GOARCH has not a default value to allow the binary be built according to the host where the command # the GOARCH has not a default value to allow the binary be built according to the host where the command
@@ -22,10 +24,9 @@ COPY vendor/ vendor/
# the docker BUILDPLATFORM arg will be linux/arm64 when for Apple x86 it will be linux/amd64. Therefore, # 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. # by leaving it empty we can ensure that the container and binary shipped on it will have the same platform.
RUN CGO_ENABLED=0 \ RUN CGO_ENABLED=0 \
GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} \ GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} GO111MODULE=on \
go build \ go build \
-ldflags "-X \"github.com/1Password/onepassword-operator/version.Version=$operator_version\"" \ -ldflags "-X \"github.com/1Password/onepassword-operator/version.Version=$operator_version\"" \
-mod vendor \
-a -o manager cmd/main.go -a -o manager cmd/main.go
# Use distroless as minimal base image to package the manager binary # Use distroless as minimal base image to package the manager binary