diff --git a/Dockerfile b/Dockerfile index d24f9833..fcfb885d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,13 @@ +ARG BUILDER_IMAGE +ARG BASE_IMAGE + # Build the manager binary -FROM --platform=${BUILDPLATFORM} golang:1.17.2 as builder +FROM --platform=${BUILDPLATFORM} ${BUILDER_IMAGE:-golang:1.17.2} as builder ARG TARGETOS ARG TARGETARCH +ARG GOPROXY +ARG GOPRIVATE WORKDIR /workspace @@ -19,11 +24,17 @@ COPY internal/ internal/ COPY pkg/ pkg/ # Build -RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} GO111MODULE=on go build -mod=mod -a -o manager main.go +RUN CGO_ENABLED=0 \ + GOOS=${TARGETOS} \ + GOARCH=${TARGETARCH} \ + GOPROXY=${GOPROXY} \ + GOPRIVATE=${GOPRIVATE} \ + GO111MODULE=on \ + go build -mod=mod -a -o manager 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 +FROM ${BASE_IMAGE:-gcr.io/distroless/static:nonroot} WORKDIR / COPY --from=builder /workspace/manager . USER 65532:65532 diff --git a/Makefile b/Makefile index f8702f2e..ad810a14 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,8 @@ OS ?= linux ARCH ?= ??? ALL_ARCH ?= arm64 arm amd64 -BUILDER ?= reloader-builder-${ARCH} +BUILDER_IMAGE ?= +BASE_IMAGE ?= BINARY ?= Reloader DOCKER_IMAGE ?= stakater/reloader @@ -20,6 +21,8 @@ BUILD= GOCMD = go GOFLAGS ?= $(GOFLAGS:) LDFLAGS = +GOPROXY ?= +GOPRIVATE ?= default: build test @@ -33,7 +36,17 @@ build: "$(GOCMD)" build ${GOFLAGS} ${LDFLAGS} -o "${BINARY}" build-image: - docker buildx build --platform ${OS}/${ARCH} --build-arg GOARCH=$(ARCH) -t "${REPOSITORY_ARCH}" --load -f Dockerfile . + docker buildx build \ + --platform ${OS}/${ARCH} \ + --build-arg GOARCH=$(ARCH) \ + --build-arg BUILDER_IMAGE=$(BUILDER_IMAGE) \ + --build-arg BASE_IMAGE=${BASE_IMAGE} \ + --build-arg GOPROXY=${GOPROXY} \ + --build-arg GOPRIVATE=${GOPRIVATE} \ + -t "${REPOSITORY_ARCH}" \ + --load \ + -f Dockerfile \ + . push: docker push ${REPOSITORY_ARCH}