#!/usr/bin/env bash # modules/docker/proxy.module.sh # # Proxy docker module. # Configures proxy, generates what's needed to compose docker stack -- # and starts/stops the proxy service. function docker::proxy::running() { docker::raw ps --format '{{.Names}}' | grep -qx "${PROXY_SERVICE}"; } function docker::proxy::exists() { docker::raw ps -a --format '{{.Names}}' | grep -qx "${PROXY_SERVICE}"; } function docker::proxy::traefik_labels() { local service="$1" local domain="$2" local backend_domain="$3" local port="$4" cat < /dev/null 2>&1 return 0 }; docker::proxy::_create_container } function docker::proxy::stop() { if docker::proxy::running "${PROXY_SERVICE}"; then docker::raw stop "${PROXY_SERVICE}" > /dev/null 2>&1 fi } function docker::proxy::restart() { if docker::proxy::running "${PROXY_SERVICE}"; then docker::raw restart "${PROXY_SERVICE}" > /dev/null 2>&1 fi } function docker::proxy::ensure_network() { docker::raw network inspect "${PROXY_NETWORK}" >/dev/null 2>&1 || \ docker::raw network create "${PROXY_NETWORK}" } function docker::proxy::ensure_proxy_running() { docker::proxy::ensure_network docker::proxy::start } # ============================================ # Logs # ============================================ function docker::proxy::logs() { docker::raw logs -f "${PROXY_SERVICE}" } # ============================================ # Private # ============================================ function docker::proxy::_create_container() { docker::raw run -d \ --name "$PROXY_SERVICE" \ --restart unless-stopped \ -p 80:80 -p 443:443 -p 8080:8080 \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ --network "$PROXY_NETWORK" \ traefik:v3.0 \ --api.dashboard=true --api.insecure=true \ --providers.docker=true \ --providers.docker.exposedbydefault=false \ --providers.docker.network="$PROXY_NETWORK" \ --entrypoints.web.address=:80 \ --entrypoints.websecure.address=:443 \ --log.level=DEBUG \ > /dev/null 2>&1 }