|
|
@ -18,35 +18,25 @@
|
|
|
|
# ==============================================================================
|
|
|
|
# ==============================================================================
|
|
|
|
# Path: scripts/make-rules/image.mk
|
|
|
|
# Path: scripts/make-rules/image.mk
|
|
|
|
# docker registry: registry.example.com/namespace/image:tag as: registry.hub.docker.com/cubxxw/<image-name>:<tag>
|
|
|
|
# docker registry: registry.example.com/namespace/image:tag as: registry.hub.docker.com/cubxxw/<image-name>:<tag>
|
|
|
|
|
|
|
|
# https://docs.docker.com/build/building/multi-platform/
|
|
|
|
#
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
|
|
# # If you wish built the manager image targeting other platforms you can use the --platform flag.
|
|
|
|
# PLATFORMS defines the target platforms for the manager image be build to provide support to multiple
|
|
|
|
# # (i.e. docker build --platform linux/arm64 ). However, you must enable docker buildKit for it.
|
|
|
|
# architectures. (i.e. make docker-buildx IMG=myregistry/mypoperator:0.0.1). To use this option you need to:
|
|
|
|
# # More info: https://docs.docker.com/develop/develop-images/build_enhancements/
|
|
|
|
# - able to use docker buildx . More info: https://docs.docker.com/build/buildx/
|
|
|
|
# .PHONY: docker-build
|
|
|
|
# - have enable BuildKit, More info: https://docs.docker.com/develop/develop-images/build_enhancements/
|
|
|
|
# docker-build: test ## Build docker image with the manager.
|
|
|
|
# - 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)
|
|
|
|
# docker build -t ${IMG} .
|
|
|
|
# To properly provided solutions that supports more than one platform you should use this option.
|
|
|
|
|
|
|
|
PLATFORMS ?= linux/arm64,linux/amd64,linux/s390x,linux/ppc64le
|
|
|
|
# .PHONY: docker-push
|
|
|
|
.PHONY: docker-buildx
|
|
|
|
# docker-push: ## Push docker image with the manager.
|
|
|
|
docker-buildx: test ## Build and push docker image for the manager for cross-platform support
|
|
|
|
# docker push ${IMG}
|
|
|
|
# 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
|
|
|
|
# # PLATFORMS defines the target platforms for the manager image be build to provide support to multiple
|
|
|
|
- docker buildx create --name project-v3-builder
|
|
|
|
# # architectures. (i.e. make docker-buildx IMG=myregistry/mypoperator:0.0.1). To use this option you need to:
|
|
|
|
docker buildx use project-v3-builder
|
|
|
|
# # - able to use docker buildx . More info: https://docs.docker.com/build/buildx/
|
|
|
|
- docker buildx build --push --platform=$(PLATFORMS) --tag ${IMG} -f Dockerfile.cross .
|
|
|
|
# # - have enable BuildKit, More info: https://docs.docker.com/develop/develop-images/build_enhancements/
|
|
|
|
- docker buildx rm project-v3-builder
|
|
|
|
# # - 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)
|
|
|
|
rm Dockerfile.cross
|
|
|
|
# # To properly provided solutions that supports more than one platform you should use this option.
|
|
|
|
|
|
|
|
# PLATFORMS ?= linux/arm64,linux/amd64,linux/s390x,linux/ppc64le
|
|
|
|
|
|
|
|
# .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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DOCKER := docker
|
|
|
|
DOCKER := docker
|
|
|
|
DOCKER_SUPPORTED_API_VERSION ?= 1.32|1.40|1.41
|
|
|
|
DOCKER_SUPPORTED_API_VERSION ?= 1.32|1.40|1.41
|
|
|
@ -98,6 +88,9 @@ image.daemon.verify:
|
|
|
|
exit 1; \
|
|
|
|
exit 1; \
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 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/
|
|
|
|
## image.build: Build docker images
|
|
|
|
## image.build: Build docker images
|
|
|
|
.PHONY: image.build
|
|
|
|
.PHONY: image.build
|
|
|
|
image.build: image.verify go.build.verify $(addprefix image.build., $(addprefix $(IMAGE_PLAT)., $(IMAGES)))
|
|
|
|
image.build: image.verify go.build.verify $(addprefix image.build., $(addprefix $(IMAGE_PLAT)., $(IMAGES)))
|
|
|
@ -126,6 +119,8 @@ image.build.%: go.build.%
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
@rm -rf $(TMP_DIR)/$(IMAGE)
|
|
|
|
@rm -rf $(TMP_DIR)/$(IMAGE)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# https://docs.docker.com/build/building/multi-platform/
|
|
|
|
|
|
|
|
# busybox image supports amd64, arm32v5, arm32v6, arm32v7, arm64v8, i386, ppc64le, and s390x
|
|
|
|
## image.buildx.%: Build docker images with buildx
|
|
|
|
## image.buildx.%: Build docker images with buildx
|
|
|
|
.PHONY: image.buildx.%
|
|
|
|
.PHONY: image.buildx.%
|
|
|
|
image.buildx.%:
|
|
|
|
image.buildx.%:
|
|
|
|