From 55d692b4d0f1add7761d1f6032fcf3232c8fe386 Mon Sep 17 00:00:00 2001 From: jurgenhaas <juergen@paragon-es.de> Date: Tue, 29 Dec 2020 11:24:58 +0100 Subject: [PATCH] docker/l3d#48 Add support for reverse proxy --- README.md | 1 + src/Handler.php | 34 ++++++++++++++++++++++++++++++ templates/settings.docker.php.twig | 4 ++++ 3 files changed, 39 insertions(+) diff --git a/README.md b/README.md index d9b2b2c..a8ca9c3 100644 --- a/README.md +++ b/README.md @@ -191,6 +191,7 @@ docker4drupal: ci_home: /home/gitlab-runner docker0: ip: [IP OF YOUR DOCKER HOST] + proxy: [IP OF TRAEFIK PROXY] live: root: '' uri: '' diff --git a/src/Handler.php b/src/Handler.php index 3babb82..542a79c 100644 --- a/src/Handler.php +++ b/src/Handler.php @@ -38,6 +38,9 @@ class Handler extends BaseHandler { 'ip' => ($this->isCiContext() || $this->isLocalDevMode()) ? $this->getDockerGateway() : $this->getLocalIpv4('docker0'), + 'proxy' => ($this->isCiContext() || $this->isLocalDevMode()) ? + $this->getDockerProxy($projectname) : + FALSE, ], 'live' => [ 'root' => '', @@ -358,6 +361,18 @@ class Handler extends BaseHandler { return $container['NetworkSettings']['Gateway']; } + /** + * @return string + */ + private function getDockerProxy(string $projectname): string { + foreach ($this->readNetworkConfig($projectname)['Containers'] as $container) { + if (isset($container['Name']) && $container['Name'] === 'traefik_traefik_1') { + return explode('/', $container['IPv4Address'])[0]; + } + } + return '127.0.0.1'; + } + /** * @param $projectRoot * @@ -402,4 +417,23 @@ class Handler extends BaseHandler { ]; } + /** + * @param string $projectname + * + * @return array + */ + private function readNetworkConfig(string $projectname): array { + try { + $output = []; + exec('docker network inspect traefik_' . $projectname, $output); + return json_decode(implode('', $output), TRUE)[0]; + } + catch (Exception $ex) { + // Ignore. + } + return [ + 'Containers' => [], + ]; + } + } diff --git a/templates/settings.docker.php.twig b/templates/settings.docker.php.twig index ac1fc19..a9cac93 100644 --- a/templates/settings.docker.php.twig +++ b/templates/settings.docker.php.twig @@ -1,6 +1,10 @@ <?php {% if drupal.version >= 8 %} +{% if docker0.proxy %} +$settings['reverse_proxy'] = TRUE; +$settings['reverse_proxy_addresses'] = array("{{ docker0.proxy }}"); +{% endif %} $settings['trusted_host_patterns'] = array( '^{{ projectname }}\.docker\.localhost$', '^{{ webserver.type }}$', -- GitLab