2021-02-09 17:05:00 +01:00
|
|
|
##
|
|
|
|
# DOCKER
|
|
|
|
|
2021-06-06 16:29:54 +02:00
|
|
|
# target docker-build: Fire docker-images-myos, Call docker-build-% target for each DOCKER_IMAGES
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-build
|
2021-05-17 03:40:02 +02:00
|
|
|
docker-build: docker-images-myos
|
2021-02-09 17:05:00 +01:00
|
|
|
$(foreach image,$(or $(SERVICE),$(DOCKER_IMAGES)),$(call make,docker-build-$(image)))
|
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-build-%: Call docker-build for each Dockerfile in docker/% folder
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-build-%
|
|
|
|
docker-build-%:
|
|
|
|
$(if $(wildcard docker/$*/Dockerfile),$(call docker-build,docker/$*))
|
2022-11-06 00:27:14 +01:00
|
|
|
$(if $(findstring :,$*),$(eval DOCKER_FILE := $(wildcard docker/$(subst :,/,$*)/Dockerfile)),$(eval DOCKER_FILE := $(wildcard docker/$*/*/Dockerfile)))
|
2022-11-29 17:22:35 +01:00
|
|
|
$(foreach dockerfile,$(DOCKER_FILE),$(call docker-build,$(dir $(dockerfile)),$(DOCKER_REPOSITORY)/$(word 2,$(subst /, ,$(dir $(dockerfile)))):$(lastword $(subst /, ,$(dir $(dockerfile)))),""))
|
2021-02-09 17:05:00 +01:00
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-commit: Call docker-commit for each SERVICES
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-commit
|
|
|
|
docker-commit:
|
|
|
|
$(foreach service,$(or $(SERVICE),$(SERVICES)),$(call docker-commit,$(service)))
|
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-commit-%: Call docker-commit with tag % for each SERVICES
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-commit-%
|
|
|
|
docker-commit-%:
|
|
|
|
$(foreach service,$(or $(SERVICE),$(SERVICES)),$(call docker-commit,$(service),,,$*))
|
|
|
|
|
2021-06-06 16:29:54 +02:00
|
|
|
# target docker-compose-build: Fire docker-images-myos, Call docker-compose build SERVICE
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-compose-build
|
2022-06-22 10:02:09 +02:00
|
|
|
docker-compose-build: DOCKER_RUN_OPTIONS += -it
|
2021-05-17 03:40:02 +02:00
|
|
|
docker-compose-build: docker-images-myos
|
2021-06-14 12:52:48 +02:00
|
|
|
$(call docker-compose,build $(DOCKER_BUILD_ARGS) $(if $(filter $(SERVICE),$(SERVICES)),$(SERVICE)))
|
2021-02-09 17:05:00 +01:00
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-compose-config: Call docker-compose config
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-compose-config
|
|
|
|
docker-compose-config:
|
|
|
|
$(call docker-compose,config)
|
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-compose-connect: Call docker-compose exec SERVICE DOCKER_SHELL
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-compose-connect
|
|
|
|
docker-compose-connect: SERVICE ?= $(DOCKER_SERVICE)
|
2022-06-22 10:02:09 +02:00
|
|
|
docker-compose-connect: DOCKER_RUN_OPTIONS += -it
|
2021-02-09 17:05:00 +01:00
|
|
|
docker-compose-connect:
|
|
|
|
$(call docker-compose,exec $(SERVICE) $(DOCKER_SHELL)) || true
|
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-compose-down: Call docker-compose rm SERVICE or docker-compose down
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-compose-down
|
2022-06-22 10:02:09 +02:00
|
|
|
docker-compose-down: DOCKER_RUN_OPTIONS += -it
|
2021-02-09 17:05:00 +01:00
|
|
|
docker-compose-down:
|
2022-06-30 23:37:10 +02:00
|
|
|
$(if $(filter $(SERVICE),$(SERVICES)),$(call docker-compose,rm -fs $(SERVICE)),$(call docker-compose,down $(DOCKER_COMPOSE_DOWN_OPTIONS) ||:))
|
2021-02-09 17:05:00 +01:00
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-compose-exec: Call docker-compose-exec SERVICE ARGS
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-compose-exec
|
|
|
|
docker-compose-exec: SERVICE ?= $(DOCKER_SERVICE)
|
|
|
|
docker-compose-exec:
|
2022-09-10 18:31:23 +02:00
|
|
|
$(call docker-compose-exec-sh,$(SERVICE),$(ARGS)) || true
|
2021-02-09 17:05:00 +01:00
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-compose-logs: Call docker-compose logs SERVICE
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-compose-logs
|
|
|
|
docker-compose-logs:
|
2022-12-19 03:48:40 +01:00
|
|
|
$(call docker-compose,logs -f --tail=100 $(if $(filter $(SERVICE),$(SERVICES)),$(SERVICE)))
|
2021-02-09 17:05:00 +01:00
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-compose-ps: Call docker-compose ps
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-compose-ps
|
|
|
|
docker-compose-ps:
|
|
|
|
$(call docker-compose,ps)
|
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-compose-rebuild: Call docker-compose-build target with DOCKER_BUILD_NO_CACHE=true
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-compose-rebuild
|
2021-06-02 00:54:33 +02:00
|
|
|
docker-compose-rebuild:
|
2021-02-09 17:05:00 +01:00
|
|
|
$(call make,docker-compose-build DOCKER_BUILD_NO_CACHE=true)
|
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-compose-recreate: Fire docker-compose-rm docker-compose-up
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-compose-recreate
|
|
|
|
docker-compose-recreate: docker-compose-rm docker-compose-up
|
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-compose-restart: Call docker-compose restart SERVICE
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-compose-restart
|
|
|
|
docker-compose-restart:
|
|
|
|
$(call docker-compose,restart $(if $(filter $(SERVICE),$(SERVICES)),$(SERVICE)))
|
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-compose-rm: Call docker-compose rm SERVICE
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-compose-rm
|
2022-06-22 10:02:09 +02:00
|
|
|
docker-compose-rm: DOCKER_RUN_OPTIONS += -it
|
2021-02-09 17:05:00 +01:00
|
|
|
docker-compose-rm:
|
|
|
|
$(call docker-compose,rm -fs $(if $(filter $(SERVICE),$(SERVICES)),$(SERVICE)))
|
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-compose-run: Call docker-compose run SERVICE ARGS
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-compose-run
|
|
|
|
docker-compose-run: SERVICE ?= $(DOCKER_SERVICE)
|
2022-06-22 10:02:09 +02:00
|
|
|
docker-compose-run: DOCKER_RUN_OPTIONS += -it
|
2021-02-09 17:05:00 +01:00
|
|
|
docker-compose-run:
|
2022-06-30 23:37:10 +02:00
|
|
|
$(call docker-compose,run $(DOCKER_COMPOSE_RUN_OPTIONS) $(SERVICE) $(ARGS))
|
2021-02-09 17:05:00 +01:00
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-compose-scale: Call docker-compose up --scale SERVICE=NUM
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-compose-scale
|
|
|
|
docker-compose-scale: SERVICE ?= $(DOCKER_SERVICE)
|
|
|
|
docker-compose-scale:
|
|
|
|
$(call docker-compose,up $(DOCKER_COMPOSE_UP_OPTIONS) --scale $(SERVICE)=$(NUM))
|
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-compose-start: Call docker-compose start SERVICE
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-compose-start
|
|
|
|
docker-compose-start:
|
|
|
|
$(call docker-compose,start $(if $(filter $(SERVICE),$(SERVICES)),$(SERVICE)))
|
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-compose-stop: Call docker-compose stop SERVICE
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-compose-stop
|
|
|
|
docker-compose-stop:
|
|
|
|
$(call docker-compose,stop $(if $(filter $(SERVICE),$(SERVICES)),$(SERVICE)))
|
|
|
|
|
2021-06-06 16:29:54 +02:00
|
|
|
# target docker-compose-up: Fire docker-image-myos, Call docker-compose up SERVICE
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-compose-up
|
2022-06-22 10:02:09 +02:00
|
|
|
docker-compose-up: DOCKER_RUN_OPTIONS += -it
|
2022-07-06 23:27:41 +02:00
|
|
|
docker-compose-up: docker-images-myos bootstrap-stack
|
2021-02-09 17:05:00 +01:00
|
|
|
$(call docker-compose,up $(DOCKER_COMPOSE_UP_OPTIONS) $(if $(filter $(SERVICE),$(SERVICES)),$(SERVICE)))
|
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-images-myos: Call myos-docker-build-% target for each DOCKER_IMAGES_MYOS
|
2021-05-17 03:40:02 +02:00
|
|
|
.PHONY: docker-images-myos
|
2022-11-22 23:49:44 +01:00
|
|
|
docker-images-myos: MAKE_VARS += DOCKER_REPOSITORY STACK
|
2021-05-17 03:40:02 +02:00
|
|
|
docker-images-myos:
|
2022-11-22 23:49:44 +01:00
|
|
|
$(foreach image,$(subst $(quote),,$(DOCKER_IMAGES_MYOS)),$(call make,docker-build-$(image),$(MYOS)))
|
2021-05-17 03:40:02 +02:00
|
|
|
|
2022-12-05 20:29:00 +01:00
|
|
|
# target docker-images-rm: Remove docker images matching DOCKER_REPOSITORY
|
2021-05-17 03:40:02 +02:00
|
|
|
.PHONY: docker-images-rm
|
|
|
|
docker-images-rm:
|
2022-12-05 20:29:00 +01:00
|
|
|
docker images |awk '$$1 ~ /^$(subst /,\/,$(DOCKER_REPOSITORY)/)/ {print $$3}' |sort -u |while read image; do $(RUN) docker rmi -f $$image; done
|
2021-05-17 03:40:02 +02:00
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-images-rm-%: Remove docker images matching %
|
2021-05-17 03:40:02 +02:00
|
|
|
.PHONY: docker-images-rm-%
|
|
|
|
docker-images-rm-%:
|
2021-06-13 02:09:57 +02:00
|
|
|
docker images |awk '$$1 ~ /^$(subst /,\/,$*)/ {print $$3}' |sort -u |while read image; do $(RUN) docker rmi -f $$image; done
|
2021-02-09 17:05:00 +01:00
|
|
|
|
2021-06-16 13:19:52 +02:00
|
|
|
# target docker-login: Run 'docker login'
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-login
|
2022-05-07 15:04:44 +02:00
|
|
|
docker-login: myos-user
|
2021-06-12 03:13:01 +02:00
|
|
|
$(RUN) docker login
|
2021-02-09 17:05:00 +01:00
|
|
|
|
2022-11-25 06:00:37 +01:00
|
|
|
# target docker-network: Fire docker-network-create-% for DOCKER_NETWORK and DOCKER_NETWORK_PUBLIC
|
2022-11-11 23:37:27 +01:00
|
|
|
.PHONY: docker-network
|
2022-11-25 06:00:37 +01:00
|
|
|
docker-network: docker-network-create docker-network-create-$(DOCKER_NETWORK_PUBLIC)
|
2022-11-11 23:37:27 +01:00
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-network-create: Fire docker-network-create-% for DOCKER_NETWORK
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-network-create
|
|
|
|
docker-network-create: docker-network-create-$(DOCKER_NETWORK)
|
|
|
|
|
2021-06-16 13:19:52 +02:00
|
|
|
# target docker-network-create-%: Run 'docker network create %'
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-network-create-%
|
|
|
|
docker-network-create-%:
|
2021-06-14 12:52:48 +02:00
|
|
|
if [ -z "$(shell docker network ls -q --filter name='^$*$$' 2>/dev/null)" ]; then \
|
2022-07-06 23:27:41 +02:00
|
|
|
$(RUN) sh -c 'docker network create $* >/dev/null 2>&1' \
|
|
|
|
&& $(or $(call INFO,docker network $* created), true) \
|
|
|
|
||: ; \
|
|
|
|
fi
|
2021-02-09 17:05:00 +01:00
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-network-rm: Fire docker-network-rm-% for DOCKER_NETWORK
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-network-rm
|
|
|
|
docker-network-rm: docker-network-rm-$(DOCKER_NETWORK)
|
|
|
|
|
2021-06-16 13:19:52 +02:00
|
|
|
# target docker-network-rm-%: Run 'docker network rm %'
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-network-rm-%
|
|
|
|
docker-network-rm-%:
|
2021-06-14 12:52:48 +02:00
|
|
|
if [ -n "$(shell docker network ls -q --filter name='^$*$$' 2>/dev/null)" ]; then \
|
2022-07-06 23:27:41 +02:00
|
|
|
$(RUN) sh -c 'docker network rm $* >/dev/null 2>&1' \
|
|
|
|
&& $(or $(call INFO,docker network $* removed), true) \
|
|
|
|
||: ; \
|
|
|
|
fi
|
2021-02-09 17:05:00 +01:00
|
|
|
|
2021-06-16 13:19:52 +02:00
|
|
|
# target docker-plugin-install: Run 'docker plugin install DOCKER_PLUGIN_OPTIONS DOCKER_PLUGIN'
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-plugin-install
|
|
|
|
docker-plugin-install:
|
|
|
|
$(eval docker_plugin_state := $(shell docker plugin ls | awk '$$2 == "$(DOCKER_PLUGIN)" {print $$NF}') )
|
2021-06-16 13:19:52 +02:00
|
|
|
$(if $(docker_plugin_state),\
|
|
|
|
$(if $(filter $(docker_plugin_state),false),\
|
|
|
|
$(RUN) docker plugin enable $(DOCKER_PLUGIN) >/dev/null 2>&1 \
|
|
|
|
&& $(or $(call INFO,docker plugin $(DOCKER_PLUGIN) enabled), true) \
|
|
|
|
), \
|
|
|
|
$(RUN) docker plugin install $(DOCKER_PLUGIN_OPTIONS) $(DOCKER_PLUGIN) $(DOCKER_PLUGIN_ARGS) >/dev/null 2>&1 \
|
|
|
|
&& $(or $(call INFO,docker plugin $(DOCKER_PLUGIN) installed), true) \
|
|
|
|
)
|
2021-02-09 17:05:00 +01:00
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-push: Call docker-push for each SERVICES
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-push
|
|
|
|
docker-push:
|
|
|
|
ifneq ($(filter $(DEPLOY),true),)
|
|
|
|
$(foreach service,$(or $(SERVICE),$(SERVICES)),$(call docker-push,$(service)))
|
|
|
|
else
|
2021-07-11 09:56:03 +02:00
|
|
|
$(call WARNING,target,$@,disabled in app,$(APP))
|
2021-02-09 17:05:00 +01:00
|
|
|
endif
|
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-push-%: Call docker-push with tag % for each SERVICES
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-push-%
|
|
|
|
docker-push-%:
|
|
|
|
ifneq ($(filter $(DEPLOY),true),)
|
|
|
|
$(foreach service,$(or $(SERVICE),$(SERVICES)),$(call docker-push,$(service),,$*))
|
|
|
|
else
|
2021-07-11 09:56:03 +02:00
|
|
|
$(call WARNING,target,$@,disabled in app,$(APP))
|
2021-02-09 17:05:00 +01:00
|
|
|
endif
|
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-rebuild: Call docker-build target with DOCKER_BUILD_CAHE=false
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-rebuild
|
|
|
|
docker-rebuild:
|
|
|
|
$(call make,docker-build DOCKER_BUILD_CACHE=false)
|
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-rebuild-%: Call docker-build-% target with DOCKER_BUILD_CAHE=false
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-rebuild-%
|
|
|
|
docker-rebuild-%:
|
|
|
|
$(call make,docker-build-$* DOCKER_BUILD_CACHE=false)
|
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-rm: Fire docker-rm-% for COMPOSE_PROJECT_NAME
|
2021-05-17 03:40:02 +02:00
|
|
|
.PHONY: docker-rm
|
|
|
|
docker-rm: docker-rm-$(COMPOSE_PROJECT_NAME)
|
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-rm-%: Remove dockers matching %
|
2021-05-17 03:40:02 +02:00
|
|
|
.PHONY: docker-rm-%
|
|
|
|
docker-rm-%:
|
2021-06-13 02:09:57 +02:00
|
|
|
docker ps -a |awk '$$NF ~ /^$*/ {print $$NF}' |while read docker; do $(RUN) docker rm -f $$docker; done
|
2021-05-17 03:40:02 +02:00
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-run: Call docker-run-% target with ARGS for SERVICE
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-run
|
|
|
|
docker-run: SERVICE ?= $(DOCKER_SERVICE)
|
|
|
|
docker-run:
|
|
|
|
$(call make,docker-run-$(SERVICE),,ARGS)
|
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-run-%: Call docker-run with image % and command ARGS
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-run-%
|
|
|
|
docker-run-%: docker-build-%
|
|
|
|
$(eval command := $(ARGS))
|
|
|
|
$(eval path := $(patsubst %/,%,$*))
|
|
|
|
$(eval image := $(DOCKER_REPOSITORY)/$(lastword $(subst /, ,$(path)))$(if $(findstring :,$*),,:$(DOCKER_IMAGE_TAG)))
|
|
|
|
$(eval image_id := $(shell docker images -q $(image) 2>/dev/null))
|
2022-12-05 20:29:00 +01:00
|
|
|
$(call docker-run,$(if $(image_id),$(image),$(path)),$(command))
|
2021-02-09 17:05:00 +01:00
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-tag: Call docker-tag for each SERVICES
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-tag
|
|
|
|
docker-tag:
|
|
|
|
ifneq ($(filter $(DEPLOY),true),)
|
|
|
|
$(foreach service,$(or $(SERVICE),$(SERVICES)),$(call docker-tag,$(service)))
|
|
|
|
else
|
2021-07-11 09:56:03 +02:00
|
|
|
$(call WARNING,target,$@,disabled in app,$(APP))
|
2021-02-09 17:05:00 +01:00
|
|
|
endif
|
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-tag-%: Call docker-tag with target tag % for each SERVICES
|
2021-02-09 17:05:00 +01:00
|
|
|
.PHONY: docker-tag-%
|
|
|
|
docker-tag-%:
|
|
|
|
ifneq ($(filter $(DEPLOY),true),)
|
|
|
|
$(foreach service,$(or $(SERVICE),$(SERVICES)),$(call docker-tag,$(service),,,,$*))
|
|
|
|
else
|
2021-07-11 09:56:03 +02:00
|
|
|
$(call WARNING,target,$@,disabled in app,$(APP))
|
2021-02-09 17:05:00 +01:00
|
|
|
endif
|
2021-05-17 03:40:02 +02:00
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-volume-rm: Fire docker-volume-rm-% for COMPOSE_PROJECT_NAME
|
2021-05-17 03:40:02 +02:00
|
|
|
.PHONY: docker-volume-rm
|
|
|
|
docker-volume-rm: docker-volume-rm-$(COMPOSE_PROJECT_NAME)
|
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# target docker-volume-rm-%: Remove docker volumes matching %
|
2021-05-17 03:40:02 +02:00
|
|
|
.PHONY: docker-volume-rm-%
|
|
|
|
docker-volume-rm-%:
|
2021-06-13 02:09:57 +02:00
|
|
|
docker volume ls |awk '$$2 ~ /^$*/ {print $$2}' |sort -u |while read volume; do $(RUN) docker volume rm $$volume; done
|