feat: use a priority when routing requests with traefik
This ensures we always use the newer config when there are conflicting versions.
This commit is contained in:
@@ -7,7 +7,7 @@ trigger-traefik-vhosts-docker-args-process-deploy() {
|
|||||||
declare desc="nginx-vhosts core-post-deploy plugin trigger"
|
declare desc="nginx-vhosts core-post-deploy plugin trigger"
|
||||||
declare trigger="docker-args-process-deploy"
|
declare trigger="docker-args-process-deploy"
|
||||||
declare APP="$1" IMAGE_SOURCE_TYPE="$2" IMAGE_TAG="$3" PROC_TYPE="$4" CONTAINER_INDEX="$5"
|
declare APP="$1" IMAGE_SOURCE_TYPE="$2" IMAGE_TAG="$3" PROC_TYPE="$4" CONTAINER_INDEX="$5"
|
||||||
local app_domains is_app_listening output proxy_container_port proxy_host_port port_map proxy_port_map proxy_scheme proxy_schemes traefik_domains
|
local app_domains is_app_listening output proxy_container_port proxy_host_port port_map proxy_port_map priority proxy_scheme proxy_schemes traefik_domains
|
||||||
local proxy_container_http_port proxy_container_http_port_candidate proxy_host_http_port_candidate
|
local proxy_container_http_port proxy_container_http_port_candidate proxy_host_http_port_candidate
|
||||||
local proxy_container_https_port proxy_container_https_port_candidate proxy_host_https_port_candidate
|
local proxy_container_https_port proxy_container_https_port_candidate proxy_host_https_port_candidate
|
||||||
local app_urls_path="$DOKKU_ROOT/$APP/URLS"
|
local app_urls_path="$DOKKU_ROOT/$APP/URLS"
|
||||||
@@ -81,6 +81,8 @@ trigger-traefik-vhosts-docker-args-process-deploy() {
|
|||||||
traefik_domains="${traefik_domains// /\\\`,\\\`}"
|
traefik_domains="${traefik_domains// /\\\`,\\\`}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
priority="$(date +%s)"
|
||||||
|
|
||||||
output="--label traefik.enable=true"
|
output="--label traefik.enable=true"
|
||||||
if [[ -n "$proxy_container_http_port" ]] || [[ -n "$proxy_container_http_port_candidate" ]]; then
|
if [[ -n "$proxy_container_http_port" ]] || [[ -n "$proxy_container_http_port_candidate" ]]; then
|
||||||
if [[ -z "$proxy_container_http_port" ]]; then
|
if [[ -z "$proxy_container_http_port" ]]; then
|
||||||
@@ -89,11 +91,12 @@ trigger-traefik-vhosts-docker-args-process-deploy() {
|
|||||||
proxy_container_http_port="$proxy_container_http_port_candidate"
|
proxy_container_http_port="$proxy_container_http_port_candidate"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
output="$output --label traefik.http.services.$APP-$PROC_TYPE.loadbalancer.server.port=$proxy_container_http_port"
|
output="$output --label traefik.http.services.$APP-$PROC_TYPE-http-$priority.loadbalancer.server.port=$proxy_container_http_port"
|
||||||
output="$output --label traefik.http.routers.$APP-$PROC_TYPE.entrypoints=http"
|
output="$output --label traefik.http.routers.$APP-$PROC_TYPE-http-$priority.entrypoints=http"
|
||||||
output="$output --label traefik.http.routers.$APP-$PROC_TYPE.service=$APP-$PROC_TYPE"
|
output="$output --label traefik.http.routers.$APP-$PROC_TYPE-http-$priority.priority=$priority"
|
||||||
|
output="$output --label traefik.http.routers.$APP-$PROC_TYPE-http-$priority.service=$APP-$PROC_TYPE"
|
||||||
if [[ -n "$traefik_domains" ]]; then
|
if [[ -n "$traefik_domains" ]]; then
|
||||||
output="$output --label \"traefik.http.routers.$APP-$PROC_TYPE.rule=Host(\\\`$traefik_domains\\\`)\""
|
output="$output --label \"traefik.http.routers.$APP-$PROC_TYPE-$priority.rule=Host(\\\`$traefik_domains\\\`)\""
|
||||||
echo "# THIS FILE IS GENERATED BY DOKKU - DO NOT EDIT, YOUR CHANGES WILL BE OVERWRITTEN" >"$app_urls_path"
|
echo "# THIS FILE IS GENERATED BY DOKKU - DO NOT EDIT, YOUR CHANGES WILL BE OVERWRITTEN" >"$app_urls_path"
|
||||||
xargs -I{} echo "http://{}" <<<"$(echo "${app_domains}" | tr ' ' '\n' | sort -u)" >>"$app_urls_path"
|
xargs -I{} echo "http://{}" <<<"$(echo "${app_domains}" | tr ' ' '\n' | sort -u)" >>"$app_urls_path"
|
||||||
fi
|
fi
|
||||||
@@ -106,12 +109,13 @@ trigger-traefik-vhosts-docker-args-process-deploy() {
|
|||||||
proxy_container_https_port="$proxy_container_https_port_candidate"
|
proxy_container_https_port="$proxy_container_https_port_candidate"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
output="$output --label traefik.http.services.$APP-$PROC_TYPE-https.loadbalancer.server.port=$proxy_container_https_port"
|
output="$output --label traefik.http.services.$APP-$PROC_TYPE-https-$priority.loadbalancer.server.port=$proxy_container_https_port"
|
||||||
output="$output --label traefik.http.routers.$APP-$PROC_TYPE-https.entrypoints=https"
|
output="$output --label traefik.http.routers.$APP-$PROC_TYPE-https-$priority.entrypoints=https"
|
||||||
output="$output --label traefik.http.routers.$APP-$PROC_TYPE-https.service=$APP-$PROC_TYPE-https"
|
output="$output --label traefik.http.routers.$APP-$PROC_TYPE-https-$priority.priority=$priority"
|
||||||
output="$output --label traefik.http.routers.$APP-$PROC_TYPE-https.tls.certresolver=leresolver"
|
output="$output --label traefik.http.routers.$APP-$PROC_TYPE-https-$priority.service=$APP-$PROC_TYPE-https"
|
||||||
|
output="$output --label traefik.http.routers.$APP-$PROC_TYPE-https-$priority.tls.certresolver=leresolver"
|
||||||
if [[ -n "$traefik_domains" ]]; then
|
if [[ -n "$traefik_domains" ]]; then
|
||||||
output="$output --label \"traefik.http.routers.$APP-$PROC_TYPE-https.rule=Host(\\\`$traefik_domains\\\`)\""
|
output="$output --label \"traefik.http.routers.$APP-$PROC_TYPE-https-$priority.rule=Host(\\\`$traefik_domains\\\`)\""
|
||||||
echo "# THIS FILE IS GENERATED BY DOKKU - DO NOT EDIT, YOUR CHANGES WILL BE OVERWRITTEN" >"$app_urls_path"
|
echo "# THIS FILE IS GENERATED BY DOKKU - DO NOT EDIT, YOUR CHANGES WILL BE OVERWRITTEN" >"$app_urls_path"
|
||||||
xargs -I{} echo "https://{}" <<<"$(echo "${app_domains}" | tr ' ' '\n' | sort -u)" >>"$app_urls_path"
|
xargs -I{} echo "https://{}" <<<"$(echo "${app_domains}" | tr ' ' '\n' | sort -u)" >>"$app_urls_path"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user