From bc2c2c19e2c05b631f74c17c86be4edc49c2c2d8 Mon Sep 17 00:00:00 2001
From: jurgenhaas <juergen.haas@lakedrops.com>
Date: Thu, 4 Aug 2022 12:22:15 +0200
Subject: [PATCH] gitlab-ci-cd/general#3 Add support for docker image prefix to
 be able to load images from a proxy

---
 src/Handler.php                   |  5 ++++
 templates/docker-compose.yml.twig | 44 +++++++++++++++----------------
 2 files changed, 27 insertions(+), 22 deletions(-)

diff --git a/src/Handler.php b/src/Handler.php
index c22f961..927a015 100644
--- a/src/Handler.php
+++ b/src/Handler.php
@@ -32,6 +32,10 @@ class Handler extends BaseHandler {
    * {@inheritdoc}
    */
   protected function configDefault(): array {
+    $dockerImageProxy = $this->env->receiveGlobal('docker_image_prefix', '', '');
+    if (!empty($dockerImageProxy)) {
+      $dockerImageProxy = str_replace('//', '/', $dockerImageProxy . '/');
+    }
     $projectname = getenv('COMPOSE_PROJECT_NAME');
     if (empty($projectname)) {
       $projectname = str_replace([' ', '-', '_', '.'], '', basename(getcwd()));
@@ -39,6 +43,7 @@ class Handler extends BaseHandler {
     }
 
     return [
+      'docker_image_prefix' => $dockerImageProxy,
       'projectname' => $projectname,
       'staging' => FALSE,
       'basicauth' => [
diff --git a/templates/docker-compose.yml.twig b/templates/docker-compose.yml.twig
index 2abf7e4..0de012b 100644
--- a/templates/docker-compose.yml.twig
+++ b/templates/docker-compose.yml.twig
@@ -10,7 +10,7 @@ networks:
 
 services:
   mariadb:
-    image: {% if dbserver.type == 'mariadb' %}'wodby/mariadb:{{ dbserver.version }}'{% elseif dbserver.type == 'mysql' %}'mysql/mysql-server:{{ dbserver.version }}'{% else %}''{% endif %}
+    image: '{{ docker_image_prefix }}{% if dbserver.type == "mariadb" %}wodby/mariadb:{{ dbserver.version }}{% elseif dbserver.type == "mysql" %}mysql/mysql-server:{{ dbserver.version }}{% endif %}'
 
 {% if drupal.live|default(0) %}
     restart: unless-stopped
@@ -30,7 +30,7 @@ services:
 
 {% if not drupal.live|default(0) %}
   mariadbtest:
-    image: {% if dbserver.type == 'mariadb' %}'wodby/mariadb:{{ dbserver.version }}'{% elseif dbserver.type == 'mysql' %}'mysql/mysql-server:{{ dbserver.version }}'{% else %}''{% endif %}
+    image: '{{ docker_image_prefix }}{% if dbserver.type == "mariadb" %}wodby/mariadb:{{ dbserver.version }}{% elseif dbserver.type == "mysql" %}mysql/mysql-server:{{ dbserver.version }}{% endif %}'
 
     environment:
       MYSQL_ROOT_PASSWORD: password
@@ -44,7 +44,7 @@ services:
 {% endif %}
 
   php:
-    image: 'wodby/drupal-php:{{ php.version }}'
+    image: '{{ docker_image_prefix }}wodby/drupal-php:{{ php.version }}'
 {% if drupal.live|default(0) %}
     restart: unless-stopped
 {% endif %}
@@ -109,7 +109,7 @@ services:
 {% if crontabs.enable|default(0) %}
 
   cron:
-    image: mcuadros/ofelia:latest
+    image: '{{ docker_image_prefix }}mcuadros/ofelia:latest'
     restart: unless-stopped
     volumes:
       - /etc/timezone:/etc/timezone:ro
@@ -119,7 +119,7 @@ services:
 {% endif %}
 
   {{ webserver.type }}:
-    image: {% if webserver.type == 'nginx' %}'wodby/drupal-nginx:{{ webserver.version|default("1.21") }}'{% elseif webserver.type == 'apache' %}'wodby/apache:2.4'{% endif %}
+    image: '{{ docker_image_prefix }}{% if webserver.type == "nginx" %}wodby/drupal-nginx:{{ webserver.version|default("1.21") }}{% elseif webserver.type == "apache" %}wodby/apache:2.4{% endif %}'
 
 {% if drupal.live|default(0) %}
     restart: unless-stopped
@@ -183,7 +183,7 @@ services:
 {% if varnish.enable %}
 
   varnish:
-    image: 'wodby/varnish:6.0'
+    image: '{{ docker_image_prefix }}wodby/varnish:6.0'
 {% if drupal.live|default(0) %}
     restart: unless-stopped
 {% endif %}
@@ -207,7 +207,7 @@ services:
 
 
   redis:
-    image: 'wodby/redis:{{ redis.version }}'
+    image: '{{ docker_image_prefix }}wodby/redis:{{ redis.version }}'
     volumes:
       - /etc/timezone:/etc/timezone:ro
       - /etc/localtime:/etc/localtime:ro
@@ -219,7 +219,7 @@ services:
 {% if not drupal.live|default(0) %}
 {% if dbbrowser.type == 'adminer' %}
   adminer:
-    image: 'wodby/adminer:{{ dbbrowser.version|default("4.6") }}'
+    image: '{{ docker_image_prefix }}wodby/adminer:{{ dbbrowser.version|default("4.6") }}'
     networks:
       - traefik-public
       - default
@@ -235,7 +235,7 @@ services:
       traefik.http.routers.adminer-{{ projectname }}.rule: Host(`adminer-{{ projectdomain }}`)
 {% elseif dbbrowser.type == 'pma' %}
   pma:
-    image: 'phpmyadmin/phpmyadmin:latest'
+    image: '{{ docker_image_prefix }}phpmyadmin/phpmyadmin:latest'
     networks:
       - traefik-public
       - default
@@ -259,7 +259,7 @@ services:
 {% if solr.enable %}
 
   solr:
-    image: 'wodby/solr:8-{{ solr.version }}'
+    image: '{{ docker_image_prefix }}wodby/solr:8-{{ solr.version }}'
 {% if drupal.live|default(0) %}
     restart: unless-stopped
 {% endif %}
@@ -280,7 +280,7 @@ services:
 
 {% if mailhog.enable and (not drupal.live|default(0) or staging) %}
   mailhog:
-    image: 'mailhog/mailhog'
+    image: '{{ docker_image_prefix }}mailhog/mailhog'
 {% if staging %}
     restart: unless-stopped
 {% endif %}
@@ -311,7 +311,7 @@ services:
 {% if node.enable %}
 
   nodejs:
-    image: 'wodby/drupal-node:1.0'
+    image: '{{ docker_image_prefix }}wodby/drupal-node:1.0'
     networks:
       - traefik-public
       - default
@@ -329,7 +329,7 @@ services:
     command: sh -c 'npm install && npm run start'
 
   node:
-    image: 'node:alpine'
+    image: '{{ docker_image_prefix }}node:alpine'
     networks:
       - traefik-public
       - default
@@ -350,7 +350,7 @@ services:
 {% if memcached.enable %}
 
   memcached:
-    image: 'wodby/memcached:1.6'
+    image: '{{ docker_image_prefix }}wodby/memcached:1.6'
 {% if drupal.live|default(0) %}
     restart: unless-stopped
 {% endif %}
@@ -361,7 +361,7 @@ services:
 {% if rsyslog.enable %}
 
   rsyslog:
-    image: 'wodby/rsyslog'
+    image: '{{ docker_image_prefix }}wodby/rsyslog'
 {% if drupal.live|default(0) %}
     restart: unless-stopped
 {% endif %}
@@ -372,7 +372,7 @@ services:
 {% if athenapdf.enable %}
 
   athenapdf:
-    image: 'arachnysdocker/athenapdf-service'
+    image: '{{ docker_image_prefix }}arachnysdocker/athenapdf-service'
 {% if drupal.live|default(0) %}
     restart: unless-stopped
 {% endif %}
@@ -390,7 +390,7 @@ services:
 {% if blackfire.enable and not drupal.live|default(0) %}
 
   blackfire:
-    image: 'blackfire/blackfire'
+    image: '{{ docker_image_prefix }}blackfire/blackfire'
     environment:
       BLACKFIRE_SERVER_ID: '{{ blackfire.id }}'
       BLACKFIRE_SERVER_TOKEN: '{{ blackfire.token }}'
@@ -402,7 +402,7 @@ services:
 
   webgrind:
     # add XDEBUG_PROFILE=1 to your request to profile that
-    image: 'wodby/webgrind:1'
+    image: '{{ docker_image_prefix }}wodby/webgrind:1'
     networks:
       - traefik-public
       - default
@@ -421,7 +421,7 @@ services:
 {% if selenium.enable and not drupal.live|default(0) %}
 
   hub:
-    image: 'elgalu/selenium'
+    image: '{{ docker_image_prefix }}elgalu/selenium'
     volumes:
       - /etc/timezone:/etc/timezone:ro
       - /etc/localtime:/etc/localtime:ro
@@ -437,7 +437,7 @@ services:
       - php
 
   chrome:
-    image: 'elgalu/selenium'
+    image: '{{ docker_image_prefix }}elgalu/selenium'
     depends_on:
       - hub
     volumes:
@@ -466,7 +466,7 @@ services:
 {% if elasticsearch.enable %}
 
   elasticsearch:
-    image: 'wodby/elasticsearch:7'
+    image: '{{ docker_image_prefix }}wodby/elasticsearch:7'
 {% if drupal.live|default(0) %}
     restart: unless-stopped
 {% endif %}
@@ -503,7 +503,7 @@ services:
 {% if backup.enable|default(0) %}
 
   borgmatic:
-    image: 'b3vis/borgmatic:{{ backup.version }}'
+    image: '{{ docker_image_prefix }}b3vis/borgmatic:{{ backup.version }}'
     restart: unless-stopped
     volumes:
       - /etc/timezone:/etc/timezone:ro
-- 
GitLab