multi domain
This commit is contained in:
+16
-21
@@ -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)
|
||||
|
||||
@@ -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
@@ -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
@@ -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) ||:) \
|
||||
) \
|
||||
|
||||
+1
-1
@@ -52,7 +52,7 @@ define app-docker
|
||||
$(eval service := $(or $(DOCKER_SERVICE),$(subst .,,$(call LOWERCASE,$(lastword $(subst /, ,$(patsubst %/Dockerfile,%,$(dockerfile)))))),undefined))
|
||||
$(eval docker := ${COMPOSE_SERVICE_NAME}-$(service))
|
||||
$(eval DOCKER_IMAGE := $(DOCKER_REPOSITORY)/$(service):$(DOCKER_IMAGE_TAG))
|
||||
$(eval DOCKER_LABELS := SERVICE_NAME=$(docker) SERVICE_TAGS=urlprefix-$(service).$(APP_DOMAIN)/$(APP_PATH))
|
||||
$(eval DOCKER_LABELS := SERVICE_NAME=$(docker) SERVICE_TAGS=$(call urlprefix,$(APP_PATH),$(service).$(APP_HOST)/)
|
||||
$(eval DOCKER_NAME := $(docker))
|
||||
$(eval DOCKER_RUN_NAME := --name $(DOCKER_NAME))
|
||||
, $(call ERROR,Unable to find Dockerfile,$(dockerfile))
|
||||
|
||||
+3
-1
@@ -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 $(filter User,$(firstword $(subst /, ,$(STACK)))),$(USER),$(DOCKER_NETWORK_PRIVATE))
|
||||
DOCKER_NETWORK ?= $(if $(STACK_USER),$(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
|
||||
@@ -26,6 +26,8 @@ HOST_DOCKER_VOLUME ?= $(HOST_COMPOSE_PROJECT_NAME)
|
||||
HOST_GID ?= 100
|
||||
HOST_UID ?= 123
|
||||
RESU_DOCKER_REPOSITORY ?= $(subst -,/,$(subst _,/,$(USER_COMPOSE_PROJECT_NAME)))
|
||||
STACK_HOST ?= $(filter host,$(firstword $(subst /, ,$(STACK))))
|
||||
STACK_USER ?= $(filter User,$(firstword $(subst /, ,$(STACK))))
|
||||
USER_COMPOSE_PROJECT_NAME ?= $(strip $(RESU))
|
||||
USER_COMPOSE_SERVICE_NAME ?= $(subst _,-,$(subst .,-,$(USER_COMPOSE_PROJECT_NAME)))
|
||||
USER_DOCKER_IMAGE ?= $(USER_DOCKER_REPOSITORY):${DOCKER_IMAGE_TAG}
|
||||
|
||||
+6
-5
@@ -3,8 +3,9 @@
|
||||
comma ?= ,
|
||||
dollar ?= $
|
||||
dquote ?= "
|
||||
quote ?= '
|
||||
lbracket ?= (
|
||||
percent ?= %
|
||||
quote ?= '
|
||||
rbracket ?= )
|
||||
APP ?= $(if $(wildcard .git),$(notdir $(CURDIR)))
|
||||
APP_LOAD ?= $(if $(SUBREPO),subrepo) $(if $(filter .,$(MYOS)),myos)
|
||||
@@ -169,8 +170,8 @@ INFO = $(if $(VERBOSE),$(if $(filter-out true,$(IGNORE_VERBOSE)), \
|
||||
))
|
||||
|
||||
# macro RESU: Print USER associated to MAIL
|
||||
RESU = \
|
||||
$(if $(findstring @,$(MAIL)), \
|
||||
RESU = $(strip \
|
||||
$(if $(findstring @,$(MAIL)), \
|
||||
$(eval user := $(subst +,,$(subst -,,$(call LOWERCASE,$(shell printf '$(MAIL)' |awk -F "@" '{print $$1}'))))) \
|
||||
$(eval domain := $(call LOWERCASE,$(call subst,_,,$(shell printf '$(MAIL)' |awk -F "@" '{print $$NF}')))) \
|
||||
$(if $(domain), \
|
||||
@@ -183,9 +184,9 @@ $(if $(findstring @,$(MAIL)), \
|
||||
$(resu_niamod) \
|
||||
, $(USER) \
|
||||
) \
|
||||
, $(USER) \
|
||||
, $(USER) \
|
||||
) \
|
||||
)
|
||||
|
||||
# macro TIME: Print time elapsed since unixtime 1
|
||||
TIME = awk '{printf "%02d:%02d:%02d\n",int($$1/3600),int(($$1%3600)/60),int($$1%60)}' \
|
||||
<<< $(shell awk 'BEGIN {current=$(or $(2),$(MAKE_UNIXTIME_CURRENT)); start=$(or $(1),$(MAKE_UNIXTIME_START)); print (current - start)}' 2>/dev/null)
|
||||
|
||||
Reference in New Issue
Block a user