multi domain

This commit is contained in:
Yann Autissier
2022-12-09 19:17:22 +00:00
parent b8fe9d893c
commit 92dcf23fdd
32 changed files with 142 additions and 98 deletions
+16 -21
View File
@@ -1,7 +1,7 @@
BUILD_AUTHOR ?= $(DOCKER_AUTHOR)
BUILD_DATE ?= $(shell TZ=UTC date "+%Y%m%dT%H%M%SZ" 2>/dev/null)
BUILD_DESCRIPTION ?= Lot of Love
BUILD_DOCUMENTATION ?= $(if $(wildcard README.md),$(APP_REPOSITORY_URL)/blob/$(COMMIT)/README.md)
BUILD_DOCUMENTATION ?= $(APP_REPOSITORY_URL)$(if $(wildcard README.md),/blob/$(COMMIT)/README.md)
BUILD_ENV_VARS ?= APP BRANCH BUILD_DATE BUILD_STATUS COMMIT DEPLOY_HOOK_URL ENV UID USER VERSION
BUILD_LABEL_VARS ?= org.label-schema.% org.opencontainers.% os.my.%
BUILD_LABEL_ARGS ?= $(foreach var,$(filter $(BUILD_LABEL_VARS),$(MAKE_FILE_VARS)),$(if $($(var)),$(var)='$($(var))'))
@@ -22,29 +22,24 @@ org.label-schema.vcs-ref ?= $(COMMIT)
org.label-schema.vcs-url ?= $(APP_REPOSITORY_URL)
org.label-schema.vendor ?= $(BUILD_AUTHOR)
org.label-schema.version ?= $(VERSION)
org.opencontainers.image.created ?= $(BUILD_DATE)
org.opencontainers.image.revision ?= $(COMMIT)
org.opencontainers.image.source ?= $(APP_REPOSITORY_URL)
org.opencontainers.image.url ?= $(APP_URL)
org.opencontainers.image.vendor ?= $(BUILD_AUTHOR)
org.opencontainers.image.version ?= $(VERSION)
org.opencontainers.image.url ?= $(APP_URL)
org.opencontainers.image.source ?= $(APP_REPOSITORY_URL)
org.opencontainers.image.version ?= $(VERSION)
org.opencontainers.image.revision ?= $(COMMIT)
org.opencontainers.image.vendor ?= $(BUILD_AUTHOR)
org.opencontainers.image.title ?= $(BUILD_NAME)
org.opencontainers.image.description ?= $(BUILD_DESCRIPTION)
org.opencontainers.image.documentation ?= $(BUILD_DOCUMENTATION)
org.opencontainers.build_tool.revision ?= $(MYOS_COMMIT)
org.opencontainers.build_tool.source ?= $(MYOS_REPOSITORY)
org.opencontainers.image.authors ?= $(BUILD_AUTHOR)
org.opencontainers.image.created ?= $(BUILD_DATE)
org.opencontainers.image.description ?= $(BUILD_DESCRIPTION)
org.opencontainers.image.documentation ?= $(BUILD_DOCUMENTATION)
org.opencontainers.image.licenses ?= $(BUILD_LICENSE)
os.my.author ?= $(BUILD_AUTHOR)
os.my.date ?= $(BUILD_DATE)
os.my.license ?= $(BUILD_LICENSE)
os.my.name ?= $(BUILD_NAME)
os.my.status ?= $(BUILD_STATUS)
os.my.user ?= $(USER)
org.opencontainers.image.revision ?= $(COMMIT)
org.opencontainers.image.source ?= $(APP_REPOSITORY_URL)
org.opencontainers.image.title ?= $(BUILD_NAME)
org.opencontainers.image.url ?= $(APP_URL)
org.opencontainers.image.vendor ?= $(BUILD_AUTHOR)
org.opencontainers.image.version ?= $(VERSION)
os.my.app ?= $(APP)
os.my.build.status ?= $(BUILD_STATUS)
os.my.compose.file ?= $(COMPOSE_FILE)
os.my.compose.project.name ?= $(COMPOSE_PROJECT_NAME)
os.my.env ?= $(ENV)
os.my.uid ?= $(UID)
os.my.service ?= $(BUILD_SERVICE)
os.my.version ?= $(VERSION)
+2 -2
View File
@@ -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 $(filter host,$(firstword $(subst /, ,$(STACK)))),$(HOST_GID),$(GID))' --build-arg UID='$(if $(filter host,$(firstword $(subst /, ,$(STACK)))),$(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 $(STACK_HOST),$(HOST_GID),$(GID))' --build-arg UID='$(if $(STACK_HOST),$(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;}' && 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 $(filter host,$(firstword $(subst /, ,$(STACK)))),$(HOST_COMPOSE_PROJECT_NAME),$(if $(filter User,$(firstword $(subst /, ,$(STACK)))),$(USER_COMPOSE_PROJECT_NAME)))
DOCKER_COMPOSE_PROJECT_NAME ?= $(if $(STACK_HOST),$(HOST_COMPOSE_PROJECT_NAME),$(if $(STACK_USER),$(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))
+20 -4
View File
@@ -1,6 +1,8 @@
APP_DIR ?= $(CURDIR)
APP_DOMAIN ?= $(addsuffix .,$(filter-out $(ENV_DEPLOY),$(ENV)))$(USER).$(DOMAIN)
APP_HOST ?= $(addsuffix .,$(APP_NAME))$(APP_DOMAIN)
APP_DOMAIN ?= $(patsubst %,$(APP_DOMAIN_PREFIX)%,$(DOMAIN))
APP_DOMAIN_PREFIX ?= $(if $(STACK_HOST),,$(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_INSTALLED ?= $(APPS)
APP_PARENT ?= $(MONOREPO)
APP_PARENT_DIR ?= $(MONOREPO_DIR)
@@ -14,9 +16,9 @@ APP_REPOSITORY_URL ?= $(GIT_REPOSITORY)
APP_REQUIRED ?= $(APP_REPOSITORY)
APP_SCHEME ?= https
APP_UPSTREAM_REPOSITORY ?= $(or $(shell git config --get remote.upstream.url 2>/dev/null),$(GIT_UPSTREAM_REPOSITORY))
APP_URI ?= $(APP_HOST)/$(APP_PATH)
APP_URI ?= $(patsubst %,%/$(APP_PATH),$(APP_HOST))
APP_URIS ?= $(APP_URI)
APP_URL ?= $(APP_SCHEME)://$(APP_URI)
APP_URL ?= $(patsubst %,$(APP_SCHEME)://%,$(APP_URI))
CONTEXT += APP APPS BRANCH DOMAIN VERSION RELEASE
CONTEXT_DEBUG += APP_DIR APP_URL APP_REPOSITORY APP_UPSTREAM_REPOSITORY ENV_DEPLOY
ENV_DEPLOY ?= $(patsubst origin/%,%,$(shell git rev-parse --symbolic --remotes=origin |sed '/origin\/HEAD/d' 2>/dev/null))
@@ -26,3 +28,17 @@ MOUNT_NFS ?= false
NFS_CONFIG ?= addr=$(NFS_HOST),actimeo=3,intr,noacl,noatime,nocto,nodiratime,nolock,soft,rsize=32768,wsize=32768,tcp,rw,vers=3
NFS_HOST ?= host.docker.internal
SERVICES ?= $(DOCKER_SERVICES)
patsublist = $(patsubst $(1),$(2),$(firstword $(3)))$(foreach pat,$(wordlist 2,16,$(3)),$(comma)$(space)$(patsubst $(1),$(2),$(pat)))
urlprefix = $(call patsublist,%,urlprefix-%$(1),$(or $(2),$(APP_URIS)))
urlprefixs = $(call urlprefix,$(1))$(foreach prefix,$(subst $(space),$(dollar),$(2)) $(subst $(space),$(dollar),$(3)) $(subst $(space),$(dollar),$(4)),$(comma)$(space)$(call subst,$(dollar),$(space),$(call urlprefix,$(prefix))))
## urlprefix tests (x APP_URI)
# $(call urlprefix)
# urlprefix-app.domain/
# $(call urlprefix,admin)
# urlprefix-app.domain/admin
# $(call urlprefix,:443/ proto=https,$(APP_HOST))
# urlprefix-app.domain:443/ proto=https
## urlprefixs tests (x prefix)
# $(call urlprefixs,admin strip=/admin,images)
# urlprefix-app.domain/admin strip=/admin, urlprefix-app.domain/images
+2 -2
View File
@@ -18,8 +18,8 @@ ufw-docker:
ufw-update: debug-UFW_UPDATE
$(eval name := $(COMPOSE_PROJECT_NAME))
$(foreach UPDATE,$(call UPPERCASE,$(UFW_UPDATE)), \
$(eval ufw_update := $($(if $(filter host,$(firstword $(subst /, ,$(STACK)))),HOST_)$(UPDATE)_UFW_UPDATE)) \
$(eval ufw_docker := $($(if $(filter host,$(firstword $(subst /, ,$(STACK)))),HOST_)$(UPDATE)_UFW_DOCKER)) \
$(eval ufw_update := $($(if $(STACK_HOST),HOST_)$(UPDATE)_UFW_UPDATE)) \
$(eval ufw_docker := $($(if $(STACK_HOST),HOST_)$(UPDATE)_UFW_DOCKER)) \
$(foreach port,$(ufw_docker), \
$(call ufw-docker,$(if $(UFW_DELETE),delete) allow $(name)-$(call LOWERCASE,$(UPDATE)) $(port) ||:) \
) \