diff --git a/make/apps/def.docker.mk b/make/apps/def.docker.mk index f19c768..59c1345 100644 --- a/make/apps/def.docker.mk +++ b/make/apps/def.docker.mk @@ -1,4 +1,4 @@ -COMPOSE_FILE ?= $(STACK_MYOS_FILE) $(wildcard docker-compose.yml docker/docker-compose.yml $(foreach file,$(patsubst docker/docker-compose.%,%,$(basename $(wildcard docker/docker-compose.*.yml))),$(if $(filter true,$(COMPOSE_FILE_$(file)) $(COMPOSE_FILE_$(call UPPERCASE,$(file)))),docker/docker-compose.$(file).yml))) +COMPOSE_FILE ?= $(MYOS_STACK_FILE) $(wildcard docker-compose.yml docker/docker-compose.yml $(foreach file,$(patsubst docker/docker-compose.%,%,$(basename $(wildcard docker/docker-compose.*.yml))),$(if $(filter true,$(COMPOSE_FILE_$(file)) $(COMPOSE_FILE_$(call UPPERCASE,$(file)))),docker/docker-compose.$(file).yml))) COMPOSE_FILE_$(ENV) ?= true COMPOSE_FILE_DEBUG ?= $(if $(DEBUG),true) COMPOSE_FILE_MYOS ?= true @@ -18,7 +18,7 @@ CONTEXT_DEBUG += DOCKER_BUILD_TARGET DOCKER_COMPOSE_PROJECT_NA DOCKER_AUTHOR ?= $(DOCKER_AUTHOR_NAME) <$(DOCKER_AUTHOR_EMAIL)> DOCKER_AUTHOR_EMAIL ?= $(subst +git,+docker,$(GIT_AUTHOR_EMAIL)) DOCKER_AUTHOR_NAME ?= $(GIT_AUTHOR_NAME) -DOCKER_BUILD_ARGS ?= $(if $(filter true,$(DOCKER_BUILD_NO_CACHE)),--pull --no-cache) $(foreach var,$(DOCKER_BUILD_VARS),$(if $($(var)),--build-arg $(var)='$($(var))')) --build-arg GID='$(if $(STACK_HOST),$(HOST_GID),$(GID))' --build-arg UID='$(if $(STACK_HOST),$(HOST_UID),$(UID))' +DOCKER_BUILD_ARGS ?= $(if $(filter true,$(DOCKER_BUILD_NO_CACHE)),--pull --no-cache) $(foreach var,$(DOCKER_BUILD_VARS),$(if $($(var)),--build-arg $(var)='$($(var))')) --build-arg GID='$(if $(HOST_STACK),$(HOST_GID),$(GID))' --build-arg UID='$(if $(HOST_STACK),$(HOST_UID),$(UID))' DOCKER_BUILD_CACHE ?= true DOCKER_BUILD_LABEL ?= $(foreach var,$(filter $(BUILD_LABEL_VARS),$(MAKE_FILE_VARS)),$(if $($(var)),--label $(var)='$($(var))')) DOCKER_BUILD_NO_CACHE ?= false @@ -29,7 +29,7 @@ DOCKER_BUILD_VARS ?= APP BRANCH COMPOSE_VERSION DOCKER_GID DOCKER_ DOCKER_COMPOSE ?= $(or $(shell docker-compose --version 2>/dev/null |awk '$$4 != "v'"$(COMPOSE_VERSION)"'" {exit 1} END {if (NR == 0) exit 1}' && printf 'docker-compose\n'),$(shell docker compose >/dev/null 2>&1 && printf 'docker compose\n')) DOCKER_COMPOSE_ARGS ?= --ansi=auto DOCKER_COMPOSE_DOWN_OPTIONS ?= -DOCKER_COMPOSE_PROJECT_NAME ?= $(if $(STACK_HOST),$(HOST_COMPOSE_PROJECT_NAME),$(if $(STACK_USER),$(USER_COMPOSE_PROJECT_NAME))) +DOCKER_COMPOSE_PROJECT_NAME ?= $(if $(HOST_STACK),$(HOST_COMPOSE_PROJECT_NAME),$(if $(USER_STACK),$(USER_COMPOSE_PROJECT_NAME))) DOCKER_COMPOSE_RUN_ENTRYPOINT ?= $(patsubst %,--entrypoint=%,$(DOCKER_COMPOSE_ENTRYPOINT)) DOCKER_COMPOSE_RUN_OPTIONS ?= --rm $(DOCKER_COMPOSE_RUN_ENTRYPOINT) $(DOCKER_COMPOSE_RUN_WORKDIR) DOCKER_COMPOSE_RUN_WORKDIR ?= $(if $(DOCKER_COMPOSE_WORKDIR),-w $(DOCKER_COMPOSE_WORKDIR)) diff --git a/make/apps/def.mk b/make/apps/def.mk index 0cb482e..e84bac9 100644 --- a/make/apps/def.mk +++ b/make/apps/def.mk @@ -1,8 +1,8 @@ APP_DIR ?= $(CURDIR) APP_DOMAIN ?= $(patsubst %,$(APP_DOMAIN_PREFIX)%,$(DOMAIN)) -APP_DOMAIN_PREFIX ?= $(if $(STACK_HOST),,$(addsuffix .,$(filter-out $(ENV_DEPLOY),$(ENV)))$(USER).) +APP_DOMAIN_PREFIX ?= $(if $(HOST_STACK),,$(addsuffix .,$(filter-out $(ENV_DEPLOY),$(ENV)))$(USER).) APP_HOST ?= $(patsubst %,$(APP_HOST_PREFIX)%,$(APP_DOMAIN))$(if $(HOST_LB),$(space)$(APP_DOMAIN)) -APP_HOST_PREFIX ?= $(addsuffix .,$(if $(STACK_HOST),$(HOSTNAME),$(if $(APP_LB),,$(APP_NAME)))) +APP_HOST_PREFIX ?= $(addsuffix .,$(if $(HOST_STACK),$(HOSTNAME),$(if $(APP_LB),,$(APP_NAME)))) APP_INSTALLED ?= $(APPS) APP_PARENT ?= $(MONOREPO) APP_PARENT_DIR ?= $(MONOREPO_DIR) diff --git a/make/apps/docker.mk b/make/apps/docker.mk index c40459a..6642f1e 100644 --- a/make/apps/docker.mk +++ b/make/apps/docker.mk @@ -221,6 +221,7 @@ docker-run: # target docker-run-%: Call docker-run with image % and command ARGS .PHONY: docker-run-% +docker-run-%: DOCKER_RUN_OPTIONS += -it docker-run-%: docker-build-% $(eval command := $(ARGS)) $(eval path := $(patsubst %/,%,$*)) diff --git a/make/apps/ufw.mk b/make/apps/ufw.mk index aca70f7..caf7360 100644 --- a/make/apps/ufw.mk +++ b/make/apps/ufw.mk @@ -37,8 +37,8 @@ ufw-up: ufw-update: debug-UFW_UPDATE $(eval name := $(COMPOSE_PROJECT_NAME)) $(foreach UPDATE,$(call UPPERCASE,$(UFW_UPDATE)), \ - $(eval ufw_update := $($(if $(STACK_HOST),HOST_)$(UPDATE)_UFW_UPDATE)) \ - $(eval ufw_docker := $($(if $(STACK_HOST),HOST_)$(UPDATE)_UFW_DOCKER)) \ + $(eval ufw_update := $($(if $(HOST_STACK),HOST_)$(UPDATE)_UFW_UPDATE)) \ + $(eval ufw_docker := $($(if $(HOST_STACK),HOST_)$(UPDATE)_UFW_DOCKER)) \ $(foreach port,$(ufw_docker), \ $(call ufw-docker,$(if $(UFW_DELETE),delete) allow $(name)-$(call LOWERCASE,$(UPDATE)) $(port) ||:) \ ) \ diff --git a/make/def.app.mk b/make/def.app.mk index 80dd620..0dfcce8 100644 --- a/make/def.app.mk +++ b/make/def.app.mk @@ -16,7 +16,7 @@ define app-bootstrap $(eval APP := $(or $(1), $(APP))) $(eval APP_DIR := $(or $(2), $(RELATIVE)$(APP))) $(eval APP_NAME := $(or $(3),$(subst -,,$(subst .,,$(call LOWERCASE,$(APP)))))) - $(eval COMPOSE_FILE := $(STACK_MYOS_FILE) $(wildcard $(APP_DIR)/docker-compose.yml $(APP_DIR)/docker-compose.$(ENV).yml $(APP_DIR)/docker/docker-compose.yml $(foreach file,$(patsubst $(APP_DIR)/docker/docker-compose.%,%,$(basename $(wildcard $(APP_DIR)/docker/docker-compose.*.yml))),$(if $(filter true,$(COMPOSE_FILE_$(file)) $(COMPOSE_FILE_$(call UPPERCASE,$(file)))),$(APP_DIR)/docker/docker-compose.$(file).yml)) $(foreach file,$(APP) $(APP).$(ENV) $(foreach env,$(COMPOSE_FILE_ENV),$(APP).$(env)),apps/$(APP)/$(file).yml))) + $(eval COMPOSE_FILE := $(MYOS_STACK_FILE) $(wildcard $(APP_DIR)/docker-compose.yml $(APP_DIR)/docker-compose.$(ENV).yml $(APP_DIR)/docker/docker-compose.yml $(foreach file,$(patsubst $(APP_DIR)/docker/docker-compose.%,%,$(basename $(wildcard $(APP_DIR)/docker/docker-compose.*.yml))),$(if $(filter true,$(COMPOSE_FILE_$(file)) $(COMPOSE_FILE_$(call UPPERCASE,$(file)))),$(APP_DIR)/docker/docker-compose.$(file).yml)) $(foreach file,$(APP) $(APP).$(ENV) $(foreach env,$(COMPOSE_FILE_ENV),$(APP).$(env)),apps/$(APP)/$(file).yml))) $(eval COMPOSE_PROJECT_NAME := $(if $(DOCKER_COMPOSE_PROJECT_NAME),$(DOCKER_COMPOSE_PROJECT_NAME),$(subst .,,$(call LOWERCASE,$(USER)-$(APP_NAME)-$(ENV)$(addprefix -,$(subst /,,$(subst -,,$(APP_PATH)))))))) $(eval COMPOSE_SERVICE_NAME := $(if $(DOCKER_COMPOSE_SERVICE_NAME),$(DOCKER_COMPOSE_SERVICE_NAME),$(subst _,-,$(COMPOSE_PROJECT_NAME)))) $(eval DOCKER_BUILD_DIR := $(APP_DIR)) @@ -70,7 +70,7 @@ endef # function app-down: Call docker rm for each Dockerfile in dir 1 define app-down $(call INFO,app-down,$(1)$(comma)) - $(if $(filter-out $(STACK_MYOS_FILE),$(COMPOSE_FILE)),$(call docker-compose,down -v), + $(if $(filter-out $(MYOS_STACK_FILE),$(COMPOSE_FILE)),$(call docker-compose,down -v), $(call docker-file,$(1)) $(foreach dockerfile,$(DOCKER_FILE), $(call app-docker,$(dockerfile)) @@ -103,7 +103,7 @@ endef # function app-logs: Call docker logs $(ARGS) for each Dockerfile in dir 1 define app-logs $(call INFO,app-logs,$(1)$(comma) $(2)) - $(if $(filter-out $(STACK_MYOS_FILE),$(COMPOSE_FILE)),$(call docker-compose,logs), + $(if $(filter-out $(MYOS_STACK_FILE),$(COMPOSE_FILE)),$(call docker-compose,logs), $(call docker-file,$(1)) $(foreach dockerfile,$(DOCKER_FILE), $(call app-docker,$(dockerfile)) @@ -148,7 +148,7 @@ endef define app-up $(call INFO,app-up,$(1)$(comma)) $(eval DOCKER_RUN_OPTIONS += -d) - $(if $(filter-out $(STACK_MYOS_FILE),$(COMPOSE_FILE)),$(call docker-compose,up), + $(if $(filter-out $(MYOS_STACK_FILE),$(COMPOSE_FILE)),$(call docker-compose,up), $(if $(shell docker ps -q -f name=$(DOCKER_NAME) 2>/dev/null), $(call INFO,docker $(DOCKER_NAME) already running) , $(call app-run,$(1)) diff --git a/make/def.docker.mk b/make/def.docker.mk index 8047674..09913ca 100644 --- a/make/def.docker.mk +++ b/make/def.docker.mk @@ -4,7 +4,7 @@ DOCKER_GID ?= $(call gid,docker) DOCKER_IMAGE ?= $(USER_DOCKER_IMAGE) DOCKER_MACHINE ?= $(shell docker run --rm alpine uname -m 2>/dev/null) DOCKER_NAME ?= $(USER_DOCKER_NAME) -DOCKER_NETWORK ?= $(if $(STACK_USER),$(USER),$(DOCKER_NETWORK_PRIVATE)) +DOCKER_NETWORK ?= $(if $(USER_STACK),$(USER),$(DOCKER_NETWORK_PRIVATE)) DOCKER_NETWORK_PRIVATE ?= $(USER)-$(ENV) DOCKER_NETWORK_PUBLIC ?= $(HOSTNAME) # DOCKER_RUN: if empty, run system command, else run it in a docker @@ -25,17 +25,17 @@ HOST_DOCKER_REPOSITORY ?= $(subst -,/,$(subst _,/,$(HOST_COMPOSE_PROJEC HOST_DOCKER_VOLUME ?= $(HOST_COMPOSE_PROJECT_NAME) HOST_GID ?= 100 HOST_UID ?= 123 +HOST_STACK ?= $(filter host,$(firstword $(subst /, ,$(STACK)))) +MYOS_STACK ?= $(MYOS)/stack/myos +MYOS_STACK_FILE ?= $(wildcard $(MYOS_STACK)/networks.yml $(MYOS_STACK)/*.$(ENV).yml) RESU_DOCKER_REPOSITORY ?= $(subst -,/,$(USER_COMPOSE_PROJECT_NAME)) -STACK_HOST ?= $(filter host,$(firstword $(subst /, ,$(STACK)))) -STACK_MYOS ?= $(MYOS)/stack/myos -STACK_MYOS_FILE ?= $(wildcard $(STACK_MYOS)/networks.yml $(STACK_MYOS)/*.$(ENV).yml) -STACK_USER ?= $(filter User,$(firstword $(subst /, ,$(STACK)))) USER_COMPOSE_PROJECT_NAME ?= $(subst .,-,$(RESU)) USER_COMPOSE_SERVICE_NAME ?= $(USER_COMPOSE_PROJECT_NAME) USER_DOCKER_IMAGE ?= $(USER_DOCKER_REPOSITORY):${DOCKER_IMAGE_TAG} USER_DOCKER_NAME ?= $(USER_COMPOSE_PROJECT_NAME) USER_DOCKER_REPOSITORY ?= $(subst -,/,$(subst _,/,$(USER))) USER_DOCKER_VOLUME ?= $(USER_COMPOSE_PROJECT_NAME) +USER_STACK ?= $(filter User,$(firstword $(subst /, ,$(STACK)))) # https://github.com/docker/libnetwork/pull/2348 ifeq ($(SYSTEM),Darwin)