From ed04901dc2238bbd62887f6611bf63dfbf2607d1 Mon Sep 17 00:00:00 2001 From: jurgenhaas <juergen@paragon-es.de> Date: Tue, 26 Jan 2021 15:08:25 +0100 Subject: [PATCH] composer/library/docker-traefik#4 Add support for portainer --- Traefik.php | 43 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/Traefik.php b/Traefik.php index 5d83ffd..928f1e1 100644 --- a/Traefik.php +++ b/Traefik.php @@ -44,6 +44,11 @@ class Traefik { */ protected $key_filename; + /** + * @var bool + */ + protected $addon_portainer = FALSE; + /** * Traefik constructor. * @@ -70,6 +75,13 @@ class Traefik { $this->key_filename = $key_filename; } + /** + * @param bool $addon_portainer + */ + public function setAddonPortainer(bool $addon_portainer): void { + $this->addon_portainer = $addon_portainer; + } + /** * Update the Traefik container. * @@ -115,8 +127,8 @@ class Traefik { * @return array */ private function defaultDockerCompose(): array { - return [ - 'version' => '3', + $config = [ + 'version' => '3.3', 'services' => [ 'traefik' => [ 'image' => 'traefik:v2.3', @@ -160,6 +172,33 @@ class Traefik { ], ], ]; + if ($this->addon_portainer) { + $config['services']['portainer'] = [ + 'image' => 'portainer/portainer-ce:2.0.0', + 'command' => '-H unix:///var/run/docker.sock', + 'restart' => 'unless-stopped', + 'networks' => [ + 'internal', + ], + 'labels' => [ + 'traefik.enable=true', + 'traefik.network=internal', + 'traefik.http.routers.frontend.rule=Host(`portainer.' . $this->domain . '`)', + 'traefik.http.routers.frontend.entrypoints=websecure', + 'traefik.http.services.frontend.loadbalancer.server.port=9000', + 'traefik.http.routers.frontend.service=frontend', + 'traefik.http.routers.edge.rule=Host(`edge.' . $this->domain . '`)', + 'traefik.http.routers.edge.entrypoints=websecure', + 'traefik.http.services.edge.loadbalancer.server.port=8000', + 'traefik.http.routers.edge.service=edge', + ], + 'volumes' => [ + './portainerdata:/data', + '/var/run/docker.sock:/var/run/docker.sock:ro', + ], + ]; + } + return $config; } /** -- GitLab