buildah instead of docker
This commit is contained in:
parent
121e8b11e7
commit
d3d81a0e9d
@ -1,7 +1,8 @@
|
|||||||
# Build the manager binary
|
# Build the manager binary
|
||||||
FROM golang:1.19 as builder
|
FROM --platform=${BUILDPLATFORM} golang:1.19 as builder
|
||||||
ARG TARGETOS
|
ARG TARGETOS
|
||||||
ARG TARGETARCH
|
ARG TARGETARCH
|
||||||
|
ARG TARGETPLATFORM
|
||||||
|
|
||||||
WORKDIR /workspace
|
WORKDIR /workspace
|
||||||
# Copy the Go Modules manifests
|
# Copy the Go Modules manifests
|
||||||
@ -25,7 +26,7 @@ RUN CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} go build -a -o ma
|
|||||||
|
|
||||||
# Use distroless as minimal base image to package the manager binary
|
# Use distroless as minimal base image to package the manager binary
|
||||||
# Refer to https://github.com/GoogleContainerTools/distroless for more details
|
# Refer to https://github.com/GoogleContainerTools/distroless for more details
|
||||||
FROM gcr.io/distroless/static:nonroot
|
FROM --platform=${TARGETPLATFORM} gcr.io/distroless/static:nonroot
|
||||||
WORKDIR /
|
WORKDIR /
|
||||||
COPY --from=builder /workspace/manager .
|
COPY --from=builder /workspace/manager .
|
||||||
USER 65532:65532
|
USER 65532:65532
|
||||||
|
|||||||
25
Makefile
25
Makefile
@ -71,38 +71,15 @@ run: manifests generate fmt vet ## Run a controller from your host.
|
|||||||
go run ./main.go
|
go run ./main.go
|
||||||
|
|
||||||
PLATFORMS ?= linux/arm64,linux/amd64
|
PLATFORMS ?= linux/arm64,linux/amd64
|
||||||
# If you wish built the manager image targeting other platforms you can use the --platform flag.
|
|
||||||
# (i.e. docker build --platform linux/arm64 ). However, you must enable docker buildKit for it.
|
|
||||||
# More info: https://docs.docker.com/develop/develop-images/build_enhancements/
|
|
||||||
.PHONY: docker-build
|
|
||||||
docker-build: test ## Build docker image with the manager.
|
|
||||||
docker build -t ${IMG} .
|
|
||||||
|
|
||||||
.PHONY: docker-build-multiarch
|
.PHONY: docker-build-multiarch
|
||||||
docker-build-multiarch:
|
docker-build-multiarch:
|
||||||
buildah bud --manifest $(MANIFEST) --platform=$(PLATFORMS) --layers Dockerfile.multi
|
buildah bud --manifest $(MANIFEST) --platform=$(PLATFORMS) --layers .
|
||||||
|
|
||||||
.PHONY: docker-push
|
.PHONY: docker-push
|
||||||
docker-push: ## Push docker image with the manager.
|
docker-push: ## Push docker image with the manager.
|
||||||
buildah manifest push --all --rm $(MANIFEST) "docker://$(IMG)"
|
buildah manifest push --all --rm $(MANIFEST) "docker://$(IMG)"
|
||||||
#docker push ${IMG}
|
#docker push ${IMG}
|
||||||
|
|
||||||
# PLATFORMS defines the target platforms for the manager image be build to provide support to multiple
|
|
||||||
# architectures. (i.e. make docker-buildx IMG=myregistry/mypoperator:0.0.1). To use this option you need to:
|
|
||||||
# - able to use docker buildx . More info: https://docs.docker.com/build/buildx/
|
|
||||||
# - have enable BuildKit, More info: https://docs.docker.com/develop/develop-images/build_enhancements/
|
|
||||||
# - be able to push the image for your registry (i.e. if you do not inform a valid value via IMG=<myregistry/image:<tag>> then the export will fail)
|
|
||||||
# To properly provided solutions that supports more than one platform you should use this option.
|
|
||||||
.PHONY: docker-buildx
|
|
||||||
docker-buildx: test ## Build and push docker image for the manager for cross-platform support
|
|
||||||
# copy existing Dockerfile and insert --platform=${BUILDPLATFORM} into Dockerfile.cross, and preserve the original Dockerfile
|
|
||||||
sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/' Dockerfile > Dockerfile.cross
|
|
||||||
- docker buildx create --name project-v3-builder
|
|
||||||
docker buildx use project-v3-builder
|
|
||||||
- docker buildx build --push --platform=$(PLATFORMS) --tag ${IMG} -f Dockerfile.cross .
|
|
||||||
- docker buildx rm project-v3-builder
|
|
||||||
rm Dockerfile.cross
|
|
||||||
|
|
||||||
##@ Deployment
|
##@ Deployment
|
||||||
|
|
||||||
ifndef ignore-not-found
|
ifndef ignore-not-found
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user