From f22ca91746f2490526173179d1ab47b3619383fd Mon Sep 17 00:00:00 2001 From: salty Date: Wed, 31 Jan 2024 16:27:19 +0100 Subject: [PATCH] add config templating --- Dockerfile | 5 ++++- docker-entrypoint.sh | 32 ++++++++++++++++++++++++++++++++ haproxy.cfg | 2 +- 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100755 docker-entrypoint.sh diff --git a/Dockerfile b/Dockerfile index afdc46f..9aa0c84 100644 --- a/Dockerfile +++ b/Dockerfile @@ -30,4 +30,7 @@ ENV ALLOW_RESTARTS=0 \ TASKS=0 \ VERSION=1 \ VOLUMES=0 -COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg +COPY docker-entrypoint.sh / +COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg.template + +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100755 index 0000000..56bf45e --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,32 @@ +#!/bin/sh +set -e + +# Normalize the input for ENABLE_IPV6 to lowercase +ENABLE_IPV6_LOWER=$(echo "$ENABLE_IPV6" | tr '[:upper:]' '[:lower:]') + +# Check for different representations of 'true' and set BIND_CONFIG +case "$ENABLE_IPV6_LOWER" in + 1|true|yes) + BIND_CONFIG="[::]:2375 v4v6" + ;; + *) + BIND_CONFIG=":2375" + ;; +esac + +# Process the HAProxy configuration template using sed +sed "s/\${BIND_CONFIG}/$BIND_CONFIG/g" /usr/local/etc/haproxy/haproxy.cfg.template > /usr/local/etc/haproxy/haproxy.cfg + +# Command-line argument handling +if [ "${1#-}" != "$1" ]; then + set -- haproxy "$@" +fi + +if [ "$#" -eq 0 ] || [ "$1" = 'haproxy' ]; then + if [ "$1" = 'haproxy' ]; then + shift + fi + set -- haproxy -W -db "$@" +fi + +exec "$@" diff --git a/haproxy.cfg b/haproxy.cfg index c87c8d8..43e3526 100644 --- a/haproxy.cfg +++ b/haproxy.cfg @@ -44,7 +44,7 @@ backend docker-events timeout server 0 frontend dockerfrontend - bind :::2375 v4v6 + bind ${BIND_CONFIG} http-request deny unless METH_GET || { env(POST) -m bool } http-request allow if { path,url_dec -m reg -i ^(/v[\d\.]+)?/containers/[a-zA-Z0-9_.-]+/((stop)|(restart)|(kill)) } { env(ALLOW_RESTARTS) -m bool } http-request allow if { path,url_dec -m reg -i ^(/v[\d\.]+)?/containers/[a-zA-Z0-9_.-]+/start } { env(ALLOW_START) -m bool }