mirror of
https://github.com/dokku/dokku.git
synced 2025-12-16 03:57:43 +01:00
197 lines
8.4 KiB
Bash
Executable File
197 lines
8.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -eo pipefail
|
|
[[ $DOKKU_TRACE ]] && set -x
|
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
|
source "$PLUGIN_AVAILABLE_PATH/proxy/functions"
|
|
source "$PLUGIN_AVAILABLE_PATH/openresty-vhosts/internal-functions"
|
|
|
|
trigger-openresty-vhosts-docker-args-process-deploy() {
|
|
declare desc="openresty-vhosts docker-args-process-deploy plugin trigger"
|
|
declare trigger="docker-args-process-deploy"
|
|
declare APP="$1" IMAGE_SOURCE_TYPE="$2" IMAGE_TAG="$3" PROC_TYPE="$4" CONTAINER_INDEX="$5"
|
|
local include_dir output value DATA
|
|
local STDIN=$(cat)
|
|
|
|
if [[ "$PROC_TYPE" != "web" ]]; then
|
|
return
|
|
fi
|
|
|
|
if [[ "$(plugn trigger proxy-type "$APP")" != "openresty" ]] && [[ "$(plugn trigger proxy-type "$APP")" != "nginx" ]]; then
|
|
return
|
|
fi
|
|
|
|
if [[ "$(plugn trigger proxy-is-enabled "$APP")" != "true" ]]; then
|
|
return
|
|
fi
|
|
|
|
if ! plugn trigger domains-vhost-enabled "$APP" 2>/dev/null; then
|
|
return
|
|
fi
|
|
|
|
# ensure we have a port mapping
|
|
plugn trigger ports-configure "$APP"
|
|
|
|
include_dir="$(fn-openresty-get-http-includes-dir "$APP")"
|
|
if [[ -d "$include_dir" ]]; then
|
|
pushd "$include_dir" >/dev/null
|
|
for filename in *; do
|
|
if [[ ! -f "$include_dir/$filename" ]]; then
|
|
continue
|
|
fi
|
|
|
|
if [[ $filename != *.conf ]]; then
|
|
continue
|
|
fi
|
|
|
|
DATA="$(base64 -w 0 <"$include_dir/$filename")"
|
|
output="$output '--label=openresty.include-http-$filename=$DATA'"
|
|
done
|
|
popd &>/dev/null || pushd "/tmp" >/dev/null
|
|
fi
|
|
|
|
include_dir="$(fn-openresty-get-location-includes-dir "$APP")"
|
|
if [[ -d "$include_dir" ]]; then
|
|
pushd "$include_dir" >/dev/null
|
|
for filename in *; do
|
|
if [[ ! -f "$include_dir/$filename" ]]; then
|
|
continue
|
|
fi
|
|
|
|
if [[ $filename != *.conf ]]; then
|
|
continue
|
|
fi
|
|
|
|
DATA="$(base64 -w 0 <"$include_dir/$filename")"
|
|
output="$output '--label=openresty.include-location-http-$filename=$DATA'"
|
|
done
|
|
popd &>/dev/null || pushd "/tmp" >/dev/null
|
|
fi
|
|
|
|
is_app_listening="false"
|
|
local APP_PORT_MAP="$(plugn trigger ports-get "$APP")"
|
|
while IFS= read -r port_map; do
|
|
proxy_scheme="$(awk -F ':' '{ print $1 }' <<<"$port_map")"
|
|
proxy_host_port="$(awk -F ':' '{ print $2 }' <<<"$port_map")"
|
|
proxy_container_port="$(awk -F ':' '{ print $3 }' <<<"$port_map")"
|
|
|
|
if [[ "$proxy_scheme" == "http" ]]; then
|
|
is_app_listening="true"
|
|
if [[ -z "$proxy_container_http_port_candidate" ]]; then
|
|
proxy_container_http_port_candidate="$proxy_container_port"
|
|
proxy_host_http_port_candidate="$proxy_host_port"
|
|
fi
|
|
|
|
if [[ "$proxy_host_port" == "80" ]] && [[ -z "$proxy_container_http_port" ]]; then
|
|
proxy_container_http_port="$proxy_container_port"
|
|
fi
|
|
fi
|
|
|
|
if [[ "$proxy_scheme" == "https" ]]; then
|
|
is_app_listening="true"
|
|
if [[ -z "$proxy_container_https_port_candidate" ]]; then
|
|
proxy_container_https_port_candidate="$proxy_container_port"
|
|
proxy_host_https_port_candidate="$proxy_host_port"
|
|
fi
|
|
|
|
if [[ "$proxy_host_port" == "443" ]] && [[ -z "$proxy_container_https_port" ]]; then
|
|
proxy_container_https_port="$proxy_container_port"
|
|
fi
|
|
fi
|
|
done <<<"$APP_PORT_MAP"
|
|
|
|
if [[ -n "$letsencrypt_email" ]] && [[ -z "$proxy_container_https_port" ]]; then
|
|
proxy_container_https_port_candidate="$proxy_container_http_port_candidate"
|
|
proxy_host_https_port_candidate="$proxy_host_http_port_candidate"
|
|
if [[ -n "$proxy_container_http_port" ]]; then
|
|
proxy_container_https_port_candidate="$proxy_container_http_port"
|
|
proxy_host_http_port_candidate=443
|
|
fi
|
|
fi
|
|
|
|
letsencrypt_value="false"
|
|
if [[ -n "$(fn-openresty-letsencrypt-email)" ]]; then
|
|
if [[ -n "$proxy_container_https_port" ]] || [[ -n "$proxy_container_https_port_candidate" ]]; then
|
|
letsencrypt_value="true"
|
|
fi
|
|
fi
|
|
|
|
output="$output '--label=openresty.letsencrypt=$letsencrypt_value'"
|
|
|
|
value="$(fn-openresty-access-log-format "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.access-log-format=$value'"
|
|
value="$(fn-openresty-access-log-path "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.access-log-path=$value'"
|
|
value="$(fn-openresty-bind-address-ipv4 "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.bind-address-ipv4=$value'"
|
|
value="$(fn-openresty-bind-address-ipv6 "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.bind-address-ipv6=$value'"
|
|
value="$(fn-openresty-client-body-timeout "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.client-body-timeout=$value'"
|
|
value="$(fn-openresty-client-header-timeout "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.client-header-timeout=$value'"
|
|
value="$(fn-openresty-client-max-body-size "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.client-max-body-size=$value'"
|
|
value="$(fn-openresty-error-log-path "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.error-log-path=$value'"
|
|
value="$(fn-openresty-hsts-include-subdomains "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.hsts-include-subdomains=$value'"
|
|
value="$(fn-openresty-hsts-max-age "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.hsts-max-age=$value'"
|
|
value="$(fn-openresty-hsts-preload "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.hsts-preload=$value'"
|
|
value="$(fn-openresty-hsts-is-enabled "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.hsts=$value'"
|
|
value="443"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.https-port=$value'"
|
|
value="$(plugn trigger domains-list "$APP" | xargs)"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.domains=$value'"
|
|
value="$(plugn trigger network-get-property "$APP" initial-network)"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.initial-network=$value'"
|
|
value="$(fn-openresty-keepalive-timeout "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.keepalive-timeout=$value'"
|
|
value="$(fn-openresty-lingering-timeout "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.lingering-timeout=$value'"
|
|
value="$(echo "$APP_PORT_MAP" | xargs)"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.port-mapping=$value'"
|
|
value="$(fn-openresty-proxy-buffer-size "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.proxy-buffer-size=$value'"
|
|
value="$(fn-openresty-proxy-buffering "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.proxy-buffering=$value'"
|
|
value="$(fn-openresty-proxy-buffers "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.proxy-buffers=$value'"
|
|
value="$(fn-openresty-proxy-busy-buffers-size "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.proxy-busy-buffer-size=$value'"
|
|
value="$(fn-openresty-proxy-connect-timeout "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.proxy-connect-timeout=$value'"
|
|
value="$(fn-openresty-proxy-read-timeout "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.proxy-read-timeout=$value'"
|
|
value="$(fn-openresty-proxy-send-timeout "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.proxy-send-timeout=$value'"
|
|
value="$(fn-openresty-send-timeout "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.send-timeout=$value'"
|
|
value="$(fn-openresty-send-timeout "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.send-timeout=$value'"
|
|
value="$(fn-openresty-underscore-in-headers "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.underscore-in-headers=$value'"
|
|
value="$(fn-openresty-x-forwarded-for-value "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.x-forwarded-for-value=$value'"
|
|
value="$(fn-openresty-x-forwarded-port-value "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.x-forwarded-port-value=$value'"
|
|
value="$(fn-openresty-x-forwarded-proto-value "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.x-forwarded-proto-value=$value'"
|
|
value="$(fn-openresty-x-forwarded-ssl "$APP")"
|
|
[[ -n "$value" ]] && output="$output '--label=openresty.x-forwarded-ssl=$value'"
|
|
|
|
local proxy_labels_file_path=$(fn-proxy-get-labels-file-path "openresty" "$APP")
|
|
if [[ -f "$proxy_labels_file_path" ]]; then
|
|
while read -r line; do
|
|
[[ -z "$line" ]] && continue
|
|
output="$output --label '$line'"
|
|
done <"$proxy_labels_file_path"
|
|
fi
|
|
|
|
echo -n "$STDIN$output"
|
|
}
|
|
|
|
trigger-openresty-vhosts-docker-args-process-deploy "$@"
|