Skip to content
Snippets Groups Projects
Commit 309f5290 authored by jurgenhaas's avatar jurgenhaas
Browse files

#48 Use traefik-public as public network and the...

#48 Use traefik-public as public network and the project specific network only internally
parent e7528365
No related branches found
No related tags found
No related merge requests found
......@@ -30,7 +30,7 @@
"composer-plugin-api": "^1||^2",
"lakedrops/ahoy": "^1.5||dev-master",
"lakedrops/composer-json-utils": "^2.0||dev-master",
"lakedrops/docker-traefik": "^2.0||dev-master"
"lakedrops/docker-traefik": "^3.0||dev-master"
},
"require-dev": {
"composer/composer": "^1||^2",
......
......@@ -93,8 +93,8 @@ class Handler extends BaseHandler {
'mailhog' => [
'host' => $this->env->receiveGlobal('MAILHOG_HOST', 'MailHog Host', 'smtp.freesmtpservers.com'),
'port' => $this->env->receiveGlobal('MAILHOG_PORT', 'MailHog Port', '25'),
'username' => $this->env->receiveGlobal('MAILHOG_USERNAME', 'MailHog Username', ''),
'password' => $this->env->receiveGlobal('MAILHOG_PASSWORD', 'MailHog Password', ''),
'username' => $this->env->receiveGlobal('MAILHOG_USERNAME', 'MailHog Username'),
'password' => $this->env->receiveGlobal('MAILHOG_PASSWORD', 'MailHog Password'),
'mechanism' => $this->env->receiveGlobal('MAILHOG_MECHANISM', 'MailHog Auth Mechanism', 'NONE'),
],
'varnish' => [
......@@ -177,7 +177,7 @@ class Handler extends BaseHandler {
* @param bool $overwrite
* Whether to overwrite existing config files.
*/
public function configureProject($overwrite = FALSE): void {
public function configureProject(bool $overwrite = FALSE): void {
// We only do the fancy stuff for developers.
if (!$this->isDevMode()) {
......@@ -296,7 +296,7 @@ class Handler extends BaseHandler {
$this->gitIgnore('tests/backstop/backstop_data/html_report');
$this->gitLFS('tests/backstop/**/*.png');
$this->updateTraefik(FALSE);
$this->updateTraefik();
// Set permissions, see https://wodby.com/stacks/drupal/docs/local/permissions
exec('setfacl -dR -m u:$(whoami):rwX -m u:82:rwX -m u:100:rX -m g::rwX ' . $projectRoot . ' >/dev/null 2>&1');
......@@ -305,22 +305,19 @@ class Handler extends BaseHandler {
/**
* Configure Traefik on the host for all projects.
*
* @param bool $rewrite
* Whether to rewrite existing Traefik config.
*/
public function configureTraefik($rewrite = FALSE): void {
public function configureTraefik(): void {
if (!$this->isDevMode()) {
return;
}
$this->init();
$this->updateTraefik($rewrite);
$this->updateTraefik();
}
/**
* @param $rewrite
* Update Traefik.
*/
private function updateTraefik($rewrite): void {
private function updateTraefik(): void {
$traefik = new Traefik(
$this->config->readValue('projectname'),
$this->config->readValue(['traefik', 'domain']),
......@@ -329,10 +326,10 @@ class Handler extends BaseHandler {
$this->config->readValue(['traefik', 'cert']),
$this->config->readValue(['traefik', 'key'])
);
if ((bool) $this->config->readValue(['traefik', 'portainer'])) {
if ($this->config->readValue(['traefik', 'portainer'])) {
$traefik->setAddonPortainer(TRUE);
}
$traefik->update($rewrite);
$traefik->update();
}
/**
......@@ -401,7 +398,7 @@ class Handler extends BaseHandler {
* @return string|array
* The ipv4 address(es).
*/
private function getLocalIpv4($interface = NULL) {
private function getLocalIpv4(string $interface = NULL) {
$out = explode(PHP_EOL, shell_exec('LC_ALL=C /sbin/ifconfig'));
$local_addrs = array();
$ifname = 'unknown';
......
......@@ -30,7 +30,7 @@ class TraefikRewriteCommand extends BaseCommand {
parent::execute($input, $output);
/** @var Handler $handler */
$handler = $this->handler;
$handler->configureTraefik(TRUE);
$handler->configureTraefik();
return 0;
}
......
version: '3'
version: '3.3'
networks:
traefik-public:
external: true
services:
mariadb:
{% if dbserver.type == 'mariadb' %}
image: 'wodby/mariadb:{{ dbserver.version }}'
{% elseif dbserver.type == 'mysql' %}
image: 'mysql/mysql-server:{{ dbserver.version }}'
{% endif %}
image: {% if dbserver.type == 'mariadb' %}'wodby/mariadb:{{ dbserver.version }}'{% elseif dbserver.type == 'mysql' %}'mysql/mysql-server:{{ dbserver.version }}'{% else %}''{% endif %}
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: drupal
......@@ -15,11 +15,7 @@ services:
MYSQL_LOG_CONSOLE: 0
mariadbtest:
{% if dbserver.type == 'mariadb' %}
image: 'wodby/mariadb:{{ dbserver.version }}'
{% elseif dbserver.type == 'mysql' %}
image: 'mysql/mysql-server:{{ dbserver.version }}'
{% endif %}
image: {% if dbserver.type == 'mariadb' %}'wodby/mariadb:{{ dbserver.version }}'{% elseif dbserver.type == 'mysql' %}'mysql/mysql-server:{{ dbserver.version }}'{% else %}''{% endif %}
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: drupal
......@@ -77,6 +73,9 @@ services:
{{ webserver.type }}:
image: {% if webserver.type == 'nginx' %}'wodby/drupal-nginx:{{ webserver.version|default("1.21") }}'{% elseif webserver.type == 'apache' %}'wodby/apache:2.4'{% endif %}
networks:
- traefik-public
- default
depends_on:
- php
environment:
......@@ -99,12 +98,15 @@ services:
- {{ projectroot }}:/var/www/html
labels:
traefik.enable: 'true'
traefik.network: {{ projectname }}
traefik.http.routers.{{ projectname }}_{{ webserver.type }}.rule: Host(`{{ projectname }}.{{ traefik.domain }}`){% for domain in extradomains|default([]) %} || Host(`{{ domain }}`){% endfor %}
traefik.docker.network: traefik-public
traefik.http.routers.{{ webserver.type }}-{{ projectname }}.rule: Host(`{{ projectname }}.{{ traefik.domain }}`){% for domain in extradomains|default([]) %} || Host(`{{ domain }}`){% endfor %}
{% if varnish.enable %}
varnish:
image: 'wodby/varnish:6.0'
networks:
- traefik-public
- default
depends_on:
- {{ webserver.type }}
environment:
......@@ -113,8 +115,8 @@ services:
VARNISH_BACKEND_PORT: 80
labels:
traefik.enable: 'true'
traefik.network: {{ projectname }}
traefik.http.routers.{{ projectname }}_varnish.rule: Host(`varnish-{{ projectname }}.{{ traefik.domain }}`)
traefik.docker.network: traefik-public
traefik.http.routers.varnish-{{ projectname }}.rule: Host(`varnish-{{ projectname }}.{{ traefik.domain }}`)
{% endif %}
redis:
......@@ -123,16 +125,24 @@ services:
{% if dbbrowser.type == 'adminer' %}
adminer:
image: 'wodby/adminer:{{ dbbrowser.version|default("4.6") }}'
networks:
- traefik-public
- default
environment:
ADMINER_SALT: adminer-salt
labels:
traefik.enable: 'true'
traefik.network: {{ projectname }}
traefik.docker.network: traefik-public
traefik.http.services.{{ projectname }}_adminer.loadbalancer.server.port: 9000
traefik.http.routers.{{ projectname }}_adminer.rule: Host(`adminer-{{ projectname }}.{{ traefik.domain }}`)
traefik.http.routers.adminer-{{ projectname }}.rule: Host(`adminer-{{ projectname }}.{{ traefik.domain }}`)
{% elseif dbbrowser.type == 'pma' %}
pma:
image: 'phpmyadmin/phpmyadmin:latest'
networks:
- traefik-public
- default
depends_on:
- mariadb
environment:
PMA_HOST: mariadb
PMA_USER: drupal
......@@ -141,24 +151,30 @@ services:
PHP_MAX_INPUT_VARS: 1G
labels:
traefik.enable: 'true'
traefik.network: {{ projectname }}
traefik.http.routers.{{ projectname }}_pma.rule: Host(`pma-{{ projectname }}.{{ traefik.domain }}`)
traefik.docker.network: traefik-public
traefik.http.routers.pma-{{ projectname }}.rule: Host(`pma-{{ projectname }}.{{ traefik.domain }}`)
{% endif %}
{% if solr.enable %}
solr:
image: 'wodby/solr:8-{{ solr.version }}'
networks:
- traefik-public
- default
environment:
SOLR_HEAP: 1024m
labels:
traefik.enable: 'true'
traefik.network: {{ projectname }}
traefik.docker.network: traefik-public
traefik.http.services.{{ projectname }}_solr.loadbalancer.server.port: 8983
traefik.http.routers.{{ projectname }}_solr.rule: Host(`solr-{{ projectname }}.{{ traefik.domain }}`)
traefik.http.routers.solr-{{ projectname }}.rule: Host(`solr-{{ projectname }}.{{ traefik.domain }}`)
{% endif %}
mailhog:
image: 'mailhog/mailhog'
networks:
- traefik-public
- default
environment:
MH_OUTGOING_SMTP: /test/mhout.json
privileged: true
......@@ -166,32 +182,38 @@ services:
- {{ projectroot }}/tests/mhout.json:/test/mhout.json
labels:
traefik.enable: 'true'
traefik.network: {{ projectname }}
traefik.docker.network: traefik-public
traefik.http.services.{{ projectname }}_mailhog.loadbalancer.server.port: 8025
traefik.http.routers.{{ projectname }}_mailhog.rule: Host(`mailhog-{{ projectname }}.{{ traefik.domain }}`)
traefik.http.routers.mailhog-{{ projectname }}.rule: Host(`mailhog-{{ projectname }}.{{ traefik.domain }}`)
{% if node.enable %}
nodejs:
image: 'wodby/drupal-node:1.0'
networks:
- traefik-public
- default
environment:
NODE_SERVICE_KEY: '{{ node.key }}'
labels:
traefik.enable: 'true'
traefik.network: {{ projectname }}
traefik.docker.network: traefik-public
traefik.http.services.{{ projectname }}_nodejs.loadbalancer.server.port: 8080
traefik.http.routers.{{ projectname }}_nodejs.rule: Host(`nodejs-{{ projectname }}.{{ traefik.domain }}`)
traefik.http.routers.nodejs-{{ projectname }}.rule: Host(`nodejs-{{ projectname }}.{{ traefik.domain }}`)
volumes:
- {{ projectroot }}/{{ node.path }}:/app
command: sh -c 'npm install && npm run start'
node:
image: 'node:alpine'
networks:
- traefik-public
- default
working_dir: /app
labels:
traefik.enable: 'true'
traefik.network: {{ projectname }}
traefik.docker.network: traefik-public
traefik.http.services.{{ projectname }}_node.loadbalancer.server.port: 3000
traefik.http.routers.{{ projectname }}_node.rule: Host(`front-{{ projectname }}.{{ traefik.domain }}`)
traefik.http.routers.node-{{ projectname }}.rule: Host(`front-{{ projectname }}.{{ traefik.domain }}`)
expose:
- '3000'
volumes:
......@@ -233,13 +255,16 @@ services:
webgrind:
# add XDEBUG_PROFILE=1 to your request to profile that
image: 'wodby/webgrind:1'
networks:
- traefik-public
- default
environment:
WEBGRIND_PROFILER_DIR: '/mnt/files/xdebug/profiler'
labels:
traefik.enable: 'true'
traefik.network: {{ projectname }}
traefik.docker.network: traefik-public
traefik.http.services.{{ projectname }}_webgrind.loadbalancer.server.port: 8080
traefik.http.routers.{{ projectname }}_webgrind.rule: Host(`webgrind-{{ projectname }}.{{ traefik.domain }}`)
traefik.http.routers.webgrind-{{ projectname }}.rule: Host(`webgrind-{{ projectname }}.{{ traefik.domain }}`)
volumes:
- {{ projectroot }}/files:/mnt/files
{% endif %}
......@@ -295,7 +320,3 @@ services:
- 9200
- 9300
{% endif %}
networks:
default:
name: traefik_{{ projectname }}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment