|
|
@ -20,11 +20,10 @@
|
|
|
|
# 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>
|
|
|
|
#
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DOCKER := docker
|
|
|
|
DOCKER := docker
|
|
|
|
DOCKER_SUPPORTED_API_VERSION ?= 1.32
|
|
|
|
DOCKER_SUPPORTED_API_VERSION ?= 1.32|1.40
|
|
|
|
|
|
|
|
|
|
|
|
REGISTRY_PREFIX ?= marmotedu
|
|
|
|
REGISTRY_PREFIX ?= cubxxw
|
|
|
|
BASE_IMAGE = centos:centos8
|
|
|
|
BASE_IMAGE = centos:centos8
|
|
|
|
|
|
|
|
|
|
|
|
EXTRA_ARGS ?= --no-cache
|
|
|
|
EXTRA_ARGS ?= --no-cache
|
|
|
@ -43,10 +42,15 @@ IMAGES_DIR ?= $(wildcard ${ROOT_DIR}/build/docker/*)
|
|
|
|
# Determine images names by stripping out the dir names
|
|
|
|
# Determine images names by stripping out the dir names
|
|
|
|
IMAGES ?= $(filter-out tools,$(foreach image,${IMAGES_DIR},$(notdir ${image})))
|
|
|
|
IMAGES ?= $(filter-out tools,$(foreach image,${IMAGES_DIR},$(notdir ${image})))
|
|
|
|
|
|
|
|
|
|
|
|
ifeq (${IMAGES},)
|
|
|
|
# ifeq (${IMAGES},)
|
|
|
|
$(error Could not determine IMAGES, set ROOT_DIR or run in source dir)
|
|
|
|
# $(error Could not determine IMAGES, set ROOT_DIR or run in source dir)
|
|
|
|
endif
|
|
|
|
# endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# ==============================================================================
|
|
|
|
|
|
|
|
# Image targets
|
|
|
|
|
|
|
|
# ==============================================================================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## image.verify: Verify docker version
|
|
|
|
.PHONY: image.verify
|
|
|
|
.PHONY: image.verify
|
|
|
|
image.verify:
|
|
|
|
image.verify:
|
|
|
|
$(eval API_VERSION := $(shell $(DOCKER) version | grep -E 'API version: {1,6}[0-9]' | head -n1 | awk '{print $$3} END { if (NR==0) print 0}' ))
|
|
|
|
$(eval API_VERSION := $(shell $(DOCKER) version | grep -E 'API version: {1,6}[0-9]' | head -n1 | awk '{print $$3} END { if (NR==0) print 0}' ))
|
|
|
@ -57,6 +61,7 @@ image.verify:
|
|
|
|
exit 1; \
|
|
|
|
exit 1; \
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## image.daemon.verify: Verify docker daemon experimental features
|
|
|
|
.PHONY: image.daemon.verify
|
|
|
|
.PHONY: image.daemon.verify
|
|
|
|
image.daemon.verify:
|
|
|
|
image.daemon.verify:
|
|
|
|
$(eval PASS := $(shell $(DOCKER) version | grep -q -E 'Experimental: {1,5}true' && echo 1 || echo 0))
|
|
|
|
$(eval PASS := $(shell $(DOCKER) version | grep -q -E 'Experimental: {1,5}true' && echo 1 || echo 0))
|
|
|
@ -65,12 +70,15 @@ image.daemon.verify:
|
|
|
|
exit 1; \
|
|
|
|
exit 1; \
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 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)))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## image.build.multiarch: Build docker images for all platforms
|
|
|
|
.PHONY: image.build.multiarch
|
|
|
|
.PHONY: image.build.multiarch
|
|
|
|
image.build.multiarch: image.verify go.build.verify $(foreach p,$(PLATFORMS),$(addprefix image.build., $(addprefix $(p)., $(IMAGES))))
|
|
|
|
image.build.multiarch: image.verify go.build.verify $(foreach p,$(PLATFORMS),$(addprefix image.build., $(addprefix $(p)., $(IMAGES))))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## image.build.%: Build docker image for a specific platform
|
|
|
|
.PHONY: image.build.%
|
|
|
|
.PHONY: image.build.%
|
|
|
|
image.build.%: go.build.%
|
|
|
|
image.build.%: go.build.%
|
|
|
|
$(eval IMAGE := $(COMMAND))
|
|
|
|
$(eval IMAGE := $(COMMAND))
|
|
|
@ -90,22 +98,27 @@ image.build.%: go.build.%
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
@rm -rf $(TMP_DIR)/$(IMAGE)
|
|
|
|
@rm -rf $(TMP_DIR)/$(IMAGE)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## image.push: Push docker images
|
|
|
|
.PHONY: image.push
|
|
|
|
.PHONY: image.push
|
|
|
|
image.push: image.verify go.build.verify $(addprefix image.push., $(addprefix $(IMAGE_PLAT)., $(IMAGES)))
|
|
|
|
image.push: image.verify go.build.verify $(addprefix image.push., $(addprefix $(IMAGE_PLAT)., $(IMAGES)))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## image.push.multiarch: Push docker images for all platforms
|
|
|
|
.PHONY: image.push.multiarch
|
|
|
|
.PHONY: image.push.multiarch
|
|
|
|
image.push.multiarch: image.verify go.build.verify $(foreach p,$(PLATFORMS),$(addprefix image.push., $(addprefix $(p)., $(IMAGES))))
|
|
|
|
image.push.multiarch: image.verify go.build.verify $(foreach p,$(PLATFORMS),$(addprefix image.push., $(addprefix $(p)., $(IMAGES))))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## image.push.%: Push docker image for a specific platform
|
|
|
|
.PHONY: image.push.%
|
|
|
|
.PHONY: image.push.%
|
|
|
|
image.push.%: image.build.%
|
|
|
|
image.push.%: image.build.%
|
|
|
|
@echo "===========> Pushing image $(IMAGE) $(VERSION) to $(REGISTRY_PREFIX)"
|
|
|
|
@echo "===========> Pushing image $(IMAGE) $(VERSION) to $(REGISTRY_PREFIX)"
|
|
|
|
$(DOCKER) push $(REGISTRY_PREFIX)/$(IMAGE)-$(ARCH):$(VERSION)
|
|
|
|
$(DOCKER) push $(REGISTRY_PREFIX)/$(IMAGE)-$(ARCH):$(VERSION)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## image.manifest.push: Push manifest list for multi-arch images
|
|
|
|
.PHONY: image.manifest.push
|
|
|
|
.PHONY: image.manifest.push
|
|
|
|
image.manifest.push: export DOCKER_CLI_EXPERIMENTAL := enabled
|
|
|
|
image.manifest.push: export DOCKER_CLI_EXPERIMENTAL := enabled
|
|
|
|
image.manifest.push: image.verify go.build.verify \
|
|
|
|
image.manifest.push: image.verify go.build.verify \
|
|
|
|
$(addprefix image.manifest.push., $(addprefix $(IMAGE_PLAT)., $(IMAGES)))
|
|
|
|
$(addprefix image.manifest.push., $(addprefix $(IMAGE_PLAT)., $(IMAGES)))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## image.manifest.push.%: Push manifest list for multi-arch images for a specific platform
|
|
|
|
.PHONY: image.manifest.push.%
|
|
|
|
.PHONY: image.manifest.push.%
|
|
|
|
image.manifest.push.%: image.push.% image.manifest.remove.%
|
|
|
|
image.manifest.push.%: image.push.% image.manifest.remove.%
|
|
|
|
@echo "===========> Pushing manifest $(IMAGE) $(VERSION) to $(REGISTRY_PREFIX) and then remove the local manifest list"
|
|
|
|
@echo "===========> Pushing manifest $(IMAGE) $(VERSION) to $(REGISTRY_PREFIX) and then remove the local manifest list"
|
|
|
@ -120,13 +133,16 @@ image.manifest.push.%: image.push.% image.manifest.remove.%
|
|
|
|
# If you find your manifests were not updated,
|
|
|
|
# If you find your manifests were not updated,
|
|
|
|
# Please manually delete them in $HOME/.docker/manifests/
|
|
|
|
# Please manually delete them in $HOME/.docker/manifests/
|
|
|
|
# and re-run.
|
|
|
|
# and re-run.
|
|
|
|
|
|
|
|
## image.manifest.remove.%: Remove local manifest list
|
|
|
|
.PHONY: image.manifest.remove.%
|
|
|
|
.PHONY: image.manifest.remove.%
|
|
|
|
image.manifest.remove.%:
|
|
|
|
image.manifest.remove.%:
|
|
|
|
@rm -rf ${HOME}/.docker/manifests/docker.io_$(REGISTRY_PREFIX)_$(IMAGE)-$(VERSION)
|
|
|
|
@rm -rf ${HOME}/.docker/manifests/docker.io_$(REGISTRY_PREFIX)_$(IMAGE)-$(VERSION)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## image.manifest.push.multiarch: Push manifest list for multi-arch images for all platforms
|
|
|
|
.PHONY: image.manifest.push.multiarch
|
|
|
|
.PHONY: image.manifest.push.multiarch
|
|
|
|
image.manifest.push.multiarch: image.push.multiarch $(addprefix image.manifest.push.multiarch., $(IMAGES))
|
|
|
|
image.manifest.push.multiarch: image.push.multiarch $(addprefix image.manifest.push.multiarch., $(IMAGES))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## image.manifest.push.multiarch.%: Push manifest list for multi-arch images for all platforms for a specific image
|
|
|
|
.PHONY: image.manifest.push.multiarch.%
|
|
|
|
.PHONY: image.manifest.push.multiarch.%
|
|
|
|
image.manifest.push.multiarch.%:
|
|
|
|
image.manifest.push.multiarch.%:
|
|
|
|
@echo "===========> Pushing manifest $* $(VERSION) to $(REGISTRY_PREFIX) and then remove the local manifest list"
|
|
|
|
@echo "===========> Pushing manifest $* $(VERSION) to $(REGISTRY_PREFIX) and then remove the local manifest list"
|
|
|
@ -135,5 +151,5 @@ image.manifest.push.multiarch.%:
|
|
|
|
|
|
|
|
|
|
|
|
## image.help: Print help for image targets
|
|
|
|
## image.help: Print help for image targets
|
|
|
|
.PHONY: image.help
|
|
|
|
.PHONY: image.help
|
|
|
|
image.help: script/make-rules/image.mk
|
|
|
|
image.help: scripts/make-rules/image.mk
|
|
|
|
$(call smallhelp)
|
|
|
|
$(call smallhelp)
|