From cdb27c836fa3ee618194906656eebaab94e8d511 Mon Sep 17 00:00:00 2001 From: cytopia Date: Wed, 27 Feb 2019 12:43:34 +0100 Subject: [PATCH 1/7] Refs #480 Add HAProxy in front of Varnish for SSL offloading --- .devilbox/www/config.php | 2 +- .devilbox/www/htdocs/vhosts.php | 12 +++++++-- compose/docker-compose.override.yml-all | 27 ++++++++++++++++++++- compose/docker-compose.override.yml-varnish | 27 ++++++++++++++++++++- 4 files changed, 63 insertions(+), 5 deletions(-) diff --git a/.devilbox/www/config.php b/.devilbox/www/config.php index dd973652..cba741d4 100644 --- a/.devilbox/www/config.php +++ b/.devilbox/www/config.php @@ -14,7 +14,7 @@ putenv('RES_OPTIONS=retrans:1 retry:1 timeout:1 attempts:1'); $DEVILBOX_VERSION = 'v0.15'; -$DEVILBOX_DATE = '2019-02-23'; +$DEVILBOX_DATE = '2019-02-27'; $DEVILBOX_API_PAGE = 'devilbox-api/status.json'; // diff --git a/.devilbox/www/htdocs/vhosts.php b/.devilbox/www/htdocs/vhosts.php index 629ba180..89881992 100644 --- a/.devilbox/www/htdocs/vhosts.php +++ b/.devilbox/www/htdocs/vhosts.php @@ -110,6 +110,14 @@ */ function checkDns(vhost) { var xhttp = new XMLHttpRequest(); + var proto; + var port; + var name = vhost + '.getTldSuffix();?>' + + var url = window.location.href.split("/"); + var tmp = url[2].split(":"); + proto = url[0]; + port = tmp.length == 2 ? ':' + tmp[1] : ''; // Timeout after XXX seconds and mark it invalid DNS xhttp.timeout = getEnv('DNS_CHECK_TIMEOUT');?>000; @@ -125,12 +133,12 @@ if (el_valid.innerHTML != 'WARN') { el_valid.innerHTML = 'OK'; } - el_href.innerHTML = ''+vhost+'.getTldSuffix().loadClass('Httpd')->getPort();?>' + el_href.innerHTML; + el_href.innerHTML = ''+name+port+'' + el_href.innerHTML; } else { //console.log(vhost); } } - xhttp.open('POST', '//'+vhost+'.getTldSuffix().loadClass('Httpd')->getPort();?>/devilbox-api/status.json', true); + xhttp.open('POST', proto+'//'+name+port+'/devilbox-api/status.json', true); xhttp.send(); // Timeout to abort in 1 second diff --git a/compose/docker-compose.override.yml-all b/compose/docker-compose.override.yml-all index 6f879cf3..683a5185 100644 --- a/compose/docker-compose.override.yml-all +++ b/compose/docker-compose.override.yml-all @@ -90,7 +90,7 @@ services: # Varnish # ----------------------------------------------------------------------------------------------- varnish: - image: devilbox/varnish:${VARNISH_SERVER:-6} + image: devilbox/varnish:${VARNISH_SERVER:-6}-0.3 hostname: varnish ports: - "${LOCAL_LISTEN_ADDR}${HOST_PORT_VARNISH:-6081}:6081" @@ -110,6 +110,31 @@ services: - php - httpd + haproxy: + image: devilbox/haproxy:0.2 + hostname: haproxy + ports: + - "${LOCAL_LISTEN_ADDR}${HOST_PORT_HAPROXY:-8080}:80" + - "${LOCAL_LISTEN_ADDR}${HOST_PORT_HAPROXY_SSL:-8443}:443" + networks: + app_net: + ipv4_address: 172.16.238.231 + environment: + - BACKEND_ADDR=varnish + - BACKEND_PORT=6081 + - DEVILBOX_UI_SSL_CN + - TLD_SUFFIX + volumes: + # Certificate Authority public key + - ${DEVILBOX_PATH}/ca:/ca:rw${MOUNT_OPTIONS} + # Mount custom mass virtual hosting + - ${HOST_PATH_HTTPD_DATADIR}:/shared/httpd:rw${MOUNT_OPTIONS} + depends_on: + - bind + - php + - httpd + - varnish + # ----------------------------------------------------------------------------------------------- # ELK Stack # ----------------------------------------------------------------------------------------------- diff --git a/compose/docker-compose.override.yml-varnish b/compose/docker-compose.override.yml-varnish index 390c0f89..f2e673dd 100644 --- a/compose/docker-compose.override.yml-varnish +++ b/compose/docker-compose.override.yml-varnish @@ -7,7 +7,7 @@ services: # Varnish # ----------------------------------------------------------------------------------------------- varnish: - image: devilbox/varnish:${VARNISH_SERVER:-6} + image: devilbox/varnish:${VARNISH_SERVER:-6}-0.3 hostname: varnish ports: - "${LOCAL_LISTEN_ADDR}${HOST_PORT_VARNISH:-6081}:6081" @@ -26,3 +26,28 @@ services: - bind - php - httpd + + haproxy: + image: devilbox/haproxy:0.2 + hostname: haproxy + ports: + - "${LOCAL_LISTEN_ADDR}${HOST_PORT_HAPROXY:-8080}:80" + - "${LOCAL_LISTEN_ADDR}${HOST_PORT_HAPROXY_SSL:-8443}:443" + networks: + app_net: + ipv4_address: 172.16.238.231 + environment: + - BACKEND_ADDR=varnish + - BACKEND_PORT=6081 + - DEVILBOX_UI_SSL_CN + - TLD_SUFFIX + volumes: + # Certificate Authority public key + - ${DEVILBOX_PATH}/ca:/ca:rw${MOUNT_OPTIONS} + # Mount custom mass virtual hosting + - ${HOST_PATH_HTTPD_DATADIR}:/shared/httpd:rw${MOUNT_OPTIONS} + depends_on: + - bind + - php + - httpd + - varnish From 5343cabcdc1cb114be3f3277db4ab927367103ab Mon Sep 17 00:00:00 2001 From: cytopia Date: Wed, 27 Feb 2019 12:44:29 +0100 Subject: [PATCH 2/7] Refs #480 Add HAProxy SSL offloading documentation --- .../snippets/additional-container.rst | 40 +++++----- docs/custom-container/enable-varnish.rst | 79 +++++++++++++++++-- 2 files changed, 93 insertions(+), 26 deletions(-) diff --git a/docs/_includes/snippets/additional-container.rst b/docs/_includes/snippets/additional-container.rst index b01738dd..06142b72 100644 --- a/docs/_includes/snippets/additional-container.rst +++ b/docs/_includes/snippets/additional-container.rst @@ -1,19 +1,21 @@ -+---------------------------+-----------+-----------+----------------+ -| Container | Name | Hostname | IP Address | -+===========================+===========+===========+================+ -| Blackfire | blackfire | blackfire | 172.16.238.200 | -+---------------------------+-----------+-----------+----------------+ -| MailHog | mailhog | mailhog | 172.16.238.201 | -+---------------------------+-----------+-----------+----------------+ -| RabbitMQ | rabbit | rabbit | 172.16.238.210 | -+---------------------------+-----------+-----------+----------------+ -| Solr | solr | solr | 172.16.238.220 | -+---------------------------+-----------+-----------+----------------+ -| Varnish | varnish | varnish | 172.16.238.230 | -+---------------------------+-----------+-----------+----------------+ -| ELK: Elastic Search | elastic | elastic | 172.16.238.240 | -+---------------------------+-----------+-----------+----------------+ -| ELK: Logstash | logstash | logstash | 172.16.238.241 | -+---------------------------+-----------+-----------+----------------+ -| ELK: Kibana | kibana | kibana | 172.16.238.242 | -+---------------------------+-----------+-----------+----------------+ ++-------------------------------------+-----------+-----------+----------------+ +| Container | Name | Hostname | IP Address | ++=====================================+===========+===========+================+ +| Blackfire | blackfire | blackfire | 172.16.238.200 | ++-------------------------------------+-----------+-----------+----------------+ +| MailHog | mailhog | mailhog | 172.16.238.201 | ++-------------------------------------+-----------+-----------+----------------+ +| RabbitMQ | rabbit | rabbit | 172.16.238.210 | ++-------------------------------------+-----------+-----------+----------------+ +| Solr | solr | solr | 172.16.238.220 | ++-------------------------------------+-----------+-----------+----------------+ +| Varnish | varnish | varnish | 172.16.238.230 | ++-------------------------------------+-----------+-----------+----------------+ +| HAProxy (SSL offloader for Varnish) | haproxy | haproxy | 172.16.238.231 | ++-------------------------------------+-----------+-----------+----------------+ +| ELK: Elastic Search | elastic | elastic | 172.16.238.240 | ++-------------------------------------+-----------+-----------+----------------+ +| ELK: Logstash | logstash | logstash | 172.16.238.241 | ++-------------------------------------+-----------+-----------+----------------+ +| ELK: Kibana | kibana | kibana | 172.16.238.242 | ++-------------------------------------+-----------+-----------+----------------+ diff --git a/docs/custom-container/enable-varnish.rst b/docs/custom-container/enable-varnish.rst index b352cadc..4c89c645 100644 --- a/docs/custom-container/enable-varnish.rst +++ b/docs/custom-container/enable-varnish.rst @@ -8,6 +8,10 @@ Enable and configure Varnish This section will guide you through getting Varnish integrated into the Devilbox. +As Varnish itself does not handle HTTPS, its Docker Compose override definition also defines an +optional HAProxy that can be started and run in front of Varnish to provide HTTPS support and take +care of the SSL offloading before requests hit Varnish. + .. seealso:: * |ext_lnk_varnish_github| * |ext_lnk_varnish_dockerhub| @@ -29,8 +33,8 @@ Available overwrites .. include:: /_includes/snippets/docker-compose-override-tree-view.rst -Varnish settings ----------------- +Stack settings +-------------- In case of Varnish, the file is ``compose/docker-compose.override.yml-varnish``. This file must be copied into the root of the Devilbox git directory. @@ -40,6 +44,13 @@ must be copied into the root of the Devilbox git directory. +=======================+======================================================================================================+ | Example compose file | ``compose/docker-compose.override.yml-all`` or |br| ``compose/docker-compose.override.yml-varnish`` | +-----------------------+------------------------------------------------------------------------------------------------------+ + +Varnish +^^^^^^^ + ++-----------------------+------------------------------------------------------------------------------------------------------+ +| What | How and where | ++=======================+======================================================================================================+ | Container IP address | ``172.16.238.230`` | +-----------------------+------------------------------------------------------------------------------------------------------+ | Container host name | ``varnish`` | @@ -55,11 +66,35 @@ must be copied into the root of the Devilbox git directory. | Further configuration | none | +-----------------------+------------------------------------------------------------------------------------------------------+ -Varnish env variables ---------------------- +HAProxy +^^^^^^^ + ++-----------------------+------------------------------------------------------------------------------------------------------+ +| What | How and where | ++=======================+======================================================================================================+ +| Container IP address | ``172.16.238.231`` | ++-----------------------+------------------------------------------------------------------------------------------------------+ +| Container host name | ``haproxy`` | ++-----------------------+------------------------------------------------------------------------------------------------------+ +| Container name | ``haproxy`` | ++-----------------------+------------------------------------------------------------------------------------------------------+ +| Mount points | none | ++-----------------------+------------------------------------------------------------------------------------------------------+ +| Exposed port | ``8080`` for HTTP and ``8443`` for HTTPS (can be changed via ``.env``) | ++-----------------------+------------------------------------------------------------------------------------------------------+ +| Available at | ``http://localhost:8080``, ``http://localhost:8443`` (or via ``http:.:8080|8443``) | ++-----------------------+------------------------------------------------------------------------------------------------------+ +| Further configuration | none | ++-----------------------+------------------------------------------------------------------------------------------------------+ + +Stack env variables +------------------- Additionally the following ``.env`` variables can be created for easy configuration: +Varnish +^^^^^^^ + +------------------------------+-----------------------------------------------+--------------------------------------------------------------------+ | Variable | Default value | Description | +==============================+===============================================+====================================================================+ @@ -74,6 +109,16 @@ Additionally the following ``.env`` variables can be created for easy configurat | ``VARNISH_PARAMS`` | ``-p default_ttl=3600 -p default_grace=3600`` | Additional Varnish startup parameter. | +------------------------------+-----------------------------------------------+--------------------------------------------------------------------+ +HAProxy +^^^^^^^ + ++------------------------------+-----------------------------------------------+-------------------------------------------------------------------------------+ +| Variable | Default value | Description | ++==============================+===============================================+===============================================================================+ +| ``HOST_PORT_HAPROXY`` | ``8080`` | Controls the host port on which HTTP requests will be available for HAProxy. | ++------------------------------+-----------------------------------------------+-------------------------------------------------------------------------------+ +| ``HOST_PORT_HAPROXY_SSL`` | ``8443`` | Controls the host port on which HTTPS requests will be available for HAProxy. | ++------------------------------+-----------------------------------------------+-------------------------------------------------------------------------------+ Instructions ============ @@ -97,8 +142,8 @@ Copy the Varnish Docker Compose overwrite file into the root of the Devilbox git 2. Adjust ``.env`` settings (optional) -------------------------------------- -Varnish is using sane defaults, which can be changed by adding variables to the ``.env`` file -and assigning custom values. +Varnish and HAProxy are using sane defaults, which can be changed by adding variables to the +``.env`` file and assigning custom values. Add the following variables to ``.env`` and adjust them to your needs: @@ -116,6 +161,11 @@ Add the following variables to ``.env`` and adjust them to your needs: VARNISH_PARAMS=-p default_ttl=3600 -p default_grace=3600 HOST_PORT_VARNISH=6081 + # HAProxy settings + HOST_PORT_HAPROXY=8080 + HOST_PORT_HAPROXY_SSL=8443 + + .. seealso:: :ref:`env_file` @@ -154,13 +204,25 @@ For this example we will assume you are using Varnish 6 The final step is to start the Devilbox with Varnish. +.. seealso:: :ref:`start_the_devilbox` + +4.1 Varnish only +^^^^^^^^^^^^^^^^ + Let's assume you want to start ``php``, ``httpd``, ``bind``, ``varnish``. .. code-block:: bash host> docker-compose up -d php httpd bind varnish -.. seealso:: :ref:`start_the_devilbox` +4.2 HTTPS offloading with HAProxy in front of Varnish +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +If you also want full HTTPS support, simply start HAproxy as well with Varnish. + +.. code-block:: bash + + host> docker-compose up -d php httpd bind haproxy varnish TL;DR @@ -185,6 +247,9 @@ directory: echo "VARNICS_CACHE_SIZE=128m" >> .env echo "VARNISH_PARAMS=-p default_ttl=3600 -p default_grace=3600" >> .env echo "HOST_PORT_VARNISH=6081" >> .env + echo "# HAProxy settings" >> .env + echo "HOST_PORT_HAPROXY=8080" >> .env + echo "HOST_PORT_HAPROXY_SSL=8443" >> .env # Start container docker-compose up -d php httpd bind varnish From 7aaa6d3ea607a64d2196977761d14f6d0a8c8f2b Mon Sep 17 00:00:00 2001 From: cytopia Date: Wed, 27 Feb 2019 12:45:35 +0100 Subject: [PATCH 3/7] Provide Architecture overview in README --- README.md | 43 ++++++++++++++++++++++------ docs/img/devilbox-stack-full.svg | 2 ++ docs/img/devilbox-stack-full.xml | 1 + docs/img/devilbox-stack-smallest.svg | 2 ++ docs/img/devilbox-stack-smallest.xml | 1 + 5 files changed, 40 insertions(+), 9 deletions(-) create mode 100644 docs/img/devilbox-stack-full.svg create mode 100644 docs/img/devilbox-stack-full.xml create mode 100644 docs/img/devilbox-stack-smallest.svg create mode 100644 docs/img/devilbox-stack-smallest.xml diff --git a/README.md b/README.md index e597aa87..f1dd8533 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ ![Devilbox](docs/img/banner.png) **[Usage](#usage)** | -**[Available Container](#available-container)** | +**[Architecture](#architecture)** | **[Community](#community)** | **[Features](#feature-overview)** | **[Intranet](#intranet-overview)** | @@ -56,16 +56,36 @@ Before updating the Devilbox ensure to always check for breaking changes until t 2. [Changelog](CHANGELOG.md) 3. [Updating](UPDATING.md) -## Available Container -The Devilbox ships the following pre-configured Docker container in any available version. +## Architecture -| Accel | Frontend | SQL | NoSQL | Queue & Search | ELK | Misc | -|---------|------------|------------|-----------|----------------|---------------|-----------| -| Varnish | Apache | MariaDB | Memcached | RabbitMQ | ElasticSearch | Bind | -| | Nginx | MySQL | MongoDB | Solr | Logstash | Blackfire | -| | PHP | PerconaDB | Redis | | Kibana | MailHog | -| | | PostgreSQL | | | | | +The Devilbox aims to be a swiss army knife for local development by providing you all the services +you would ever need. To get an idea about the architecture behind it and to also see what's available +have a look at the following diagrams and tables. + +#### Smallest Stack +This is the smallest possible and fully functional stack you can run: + +![Devilbox Stack](docs/img/devilbox-stack-smallest.svg) + +#### Full Stack +To better understand what is actually possible have a look at the full example: + +![Devilbox Stack](docs/img/devilbox-stack-full.svg) + +#### Available Container + +The following table lists all integrated and pre-configured Docker container shipped by the Devilbox. +Only the webserver and PHP container are mandatory, all others are optional and don't need to be started. + +Each of them is also available in multiple different versions in order to reflect your exact desired environment. + +| Accel | Frontend | SQL | NoSQL | Queue | Search | ELK | Utils | +|---------|------------|------------|-----------|----------|--------|---------------|-----------| +| HAProxy | Apache | MariaDB | Memcached | RabbitMQ | Solr | ElasticSearch | Bind | +| Varnish | Nginx | MySQL | MongoDB | | | Logstash | Blackfire | +| | PHP | PerconaDB | Redis | | | Kibana | MailHog | +| | | PostgreSQL | | | | | | > **Documentation:** > [Available Container](https://devilbox.readthedocs.io/en/latest/readings/available-container.html) @@ -342,6 +362,7 @@ Additionally to the default stack, there are a variety of other services that ca MailHog RabbitMQ Solr + HAProxy Varnish @@ -352,6 +373,7 @@ Additionally to the default stack, there are a variety of other services that ca v1.0.0 3.6 5 + 1.X 4 @@ -360,6 +382,7 @@ Additionally to the default stack, there are a variety of other services that ca latest 3.7 6 + 5 @@ -368,6 +391,7 @@ Additionally to the default stack, there are a variety of other services that ca latest 7 + 6 @@ -376,6 +400,7 @@ Additionally to the default stack, there are a variety of other services that ca latest + latest diff --git a/docs/img/devilbox-stack-full.svg b/docs/img/devilbox-stack-full.svg new file mode 100644 index 00000000..f8869ec6 --- /dev/null +++ b/docs/img/devilbox-stack-full.svg @@ -0,0 +1,2 @@ + +
...
[Not supported by viewer]
Node
[Not supported by viewer]
Logstash
Logstash
Elastic Search
Elastic Search
Kibana
[Not supported by viewer]
Sphinx
[Not supported by viewer]
Redis
Redis
Memcd
Memcd
Mongo
Mongo
Devilbox Intranet
[Not supported by viewer]
php
[Not supported by viewer]
Redmin
[Not supported by viewer]
php
[Not supported by viewer]
pgAdmin
[Not supported by viewer]
PgSQL
PgSQL
Percona
Percona
Nginx
Nginx
Apache
Apache
Varnish
Varnish
MailHog
MailHog
Blackfire.io

Blackfire.io<br><br>
8.0
[Not supported by viewer]
7.4
[Not supported by viewer]
7.3
[Not supported by viewer]
5.4
[Not supported by viewer]
5.2
[Not supported by viewer]
5.3
[Not supported by viewer]
Rabbit
Rabbit
Bind
Bind
Xdebug
Xdebug
HAProxy
HAProxy
HTTPS
HTTPS
HTTP
HTTP
HTTP
HTTP
HTTP
HTTP
HTTPS
HTTPS
HTTP
HTTP
HTTP
HTTP
\ No newline at end of file diff --git a/docs/img/devilbox-stack-full.xml b/docs/img/devilbox-stack-full.xml new file mode 100644 index 00000000..c9ac7011 --- /dev/null +++ b/docs/img/devilbox-stack-full.xml @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docs/img/devilbox-stack-smallest.svg b/docs/img/devilbox-stack-smallest.svg new file mode 100644 index 00000000..9d0977d3 --- /dev/null +++ b/docs/img/devilbox-stack-smallest.svg @@ -0,0 +1,2 @@ + +
Nginx
Nginx
Apache
Apache
X.Y
[Not supported by viewer]
HTTPS
HTTPS
HTTP
HTTP
\ No newline at end of file diff --git a/docs/img/devilbox-stack-smallest.xml b/docs/img/devilbox-stack-smallest.xml new file mode 100644 index 00000000..11ca41d5 --- /dev/null +++ b/docs/img/devilbox-stack-smallest.xml @@ -0,0 +1 @@ +3VpRd6I4FP41PpYDIQg+qtX2nO3Ocbed2ZknD0KEnEHCQqi6v34TCAiEKnbE2ulDJffCxXzfzZfcxIE+3eweYjvy/yQuCgZAdXcD/X4AALBM9p8b9rlBM4zc4MXYFaaD4Rn/h4RRFdYUuyip3UgJCSiO6kaHhCFyaM1mxzHZ1m9bk6D+1sj2kGR4duxAtv6DXeoL69CAB8cjwp5fvFobjnLPxi7uFl1JfNsl24pJnw30aUwIza82uykKOHgFMPlz8ze85TeLUUi7PICWw6+zP548OgundP/30iO+eqfnUV7tIBU9Fl+W7gsIYpKGLuJBtIE+2fqYoufIdrh3yzhnNp9uAuFe4yCYkoDE2bP62nKQ4zB7QmPyE1U8K8uAhso8cjdEz15RTNGuYhLdekBkg2i8Z7cIL9QFxPsi60R7W6FMFTa/yhYQ2WiLNPHK2Acg2YXA8gxctX5xdW1krVtxHToWWq0vgysYjW4OV310GlmPQRt173+pHvaqiKAexUVXLcWoIaNDQ0LGagEGqr3hMrxwxsn4nSDkdFp9HDjmaXCYPEf8Em+yKWGSfY6TKJ9VuFLZRWONdxzFCe8yZnPFk71CwYIkmGISMv+KUEo2lRvGAfa4g5KoiMxaPqV8FhvzzoG544aKnVJfVRz2LJivAuKxj9DD4e4uCtKkbDAHUaLQ64ck4R02MtyU8hsMZQoLWw8UWhKFXzgaEo+sf7SeyXWNDEmIGoIqTLZgyWFgoriFvg12Xf6a1qFzGFzts9qliNFBg5mRxAxsGVygt8FVvO22FBmMrI9WZPBBilwScsuKDG9fkRGjhiHo+EKRt9EdS0vK0QfzNAqI7XJRBqrGxHGusnE4txl5PnqPQp9BmvAajYwvFbuq0WaLEpi9kWpIpI4zQD65SJ/Pja7emEib8vR5dZGGsF6m6UAuJyzjmipkdigmepHoko4blmirw7x+PYleM+UV20MaaEh2qdh8zcw0AyVKaLMwSohoLtCGpmnWkuvTnITBPl1qEJoWUFVTAxrc4pEzWS6+PDD34nGRy3fy6p0p4WeQWkj4KY1oW2JDxbB647xt32IYUEFAjfzhvykpHHdJRg2jQdVgtDs42ZXHP78rP4pA7JvlsXLPJ58bzicdftTMQMOv30Z/zeNvu3SkzZ6ms/Uj6bJRxdZBY76VygdpQJyfLz4OG7tTjcHJnpjjoPCiHabfOazKiC3K8/aPrA11XbTvdwL3rLGvNBYoxqyrnM/cFrJu5+FUFRSGIh4sDIeAWWtfbTVDvjnnJSSNHXSM/vw+asceOpYmYpsVubXd5qNib7RkQWGLUWBT/Frfo25LDfGGBcHZ4C1qe6gphqlBNttm/836tGxYilVxj+rhc0xExEPySS9pbsrqeuN75qBJgbIsLiF5f2J3qL5+NbHfzJsb4bnkrmRWfSeXqno8UN9cdtjcLJYi6wDtBKuTCsFOYCcJzrfM7ZjK5jfnmwFbzWd/jXz4DBkAmsQ1l4tdM0A/FajnDIAdDqr6rl/YAry57W/IJXcbmwD2NHvDDiqXwyJyV5hVGabjsL8fvI+CRu+QMeWRLB/brp345fLv1OozaFQv0pLzzPKGpDTAIXtLcYyttq1nC43b7Dx+2q6Q9Ro7SEmQk8aY7hU+iS2jmFAWIyu2GseG5nwyhqCTjh1Pt7PKVq2lptdGign6Yl6eLR5fXhbPEv23UWlUuLAaw7TljP9XeSm8dTmHkoxdtQiBHXaDr6DudW03Wyqztu3UCxx1t4PSoTR7A5TjIF9Ey68KRcfTgt9Py9PwiJrfj6HKVsaymkt7bl0zpPsvRKryDtuUQgF6X8kgnzJwef+N1f3sH+7UC3p5jXohcWfNw8/X8pX+4UeA+ux/ \ No newline at end of file From 8496818decf15c0c15009527cdf2e42d723e7fe0 Mon Sep 17 00:00:00 2001 From: cytopia Date: Wed, 27 Feb 2019 14:20:34 +0100 Subject: [PATCH 4/7] Keep CHANGELOG in sync --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 617ecc2d..30bea691 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -42,6 +42,7 @@ major versions. - RabbitMQ - Solr - Varnish + - HAProxy - New binaries - `blackfire` - `dep` (Deployer) From 47c830116abb92046850e3b79faaba8e3a7d1179 Mon Sep 17 00:00:00 2001 From: cytopia Date: Wed, 27 Feb 2019 17:24:57 +0100 Subject: [PATCH 5/7] Ensure README is generated idempotently --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index f1dd8533..cf0ca781 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,6 @@ Before updating the Devilbox ensure to always check for breaking changes until t 2. [Changelog](CHANGELOG.md) 3. [Updating](UPDATING.md) - ## Architecture The Devilbox aims to be a swiss army knife for local development by providing you all the services From cb6f109b4fcf9faffbe38ef623f59e9051d41e53 Mon Sep 17 00:00:00 2001 From: cytopia Date: Wed, 27 Feb 2019 17:27:42 +0100 Subject: [PATCH 6/7] Fix redirected link --- docs/support/troubleshooting.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/support/troubleshooting.rst b/docs/support/troubleshooting.rst index 55d45d5e..78ddb6c0 100644 --- a/docs/support/troubleshooting.rst +++ b/docs/support/troubleshooting.rst @@ -69,7 +69,7 @@ experience similar issues as well, check for any unattended Windows updates or updates to Docker itself. If those exist, try to revert them and see if that was the cause. I heard many bug stories from fellow Windows users so far. -A good contact point for that is the Docker forum itself: https://forums.docker.com/c/docker-for-windows +A good contact point for that is the Docker forum itself: https://forums.docker.com/c/docker-desktop-for-windows A few general things you should always do before attempting to open up issues are: From d7a0cdb6628724cea659658ee67616fe0e7e39cb Mon Sep 17 00:00:00 2001 From: cytopia Date: Thu, 28 Feb 2019 12:49:45 +0100 Subject: [PATCH 7/7] Use diagrams from artwork repository --- README.md | 8 ++++++-- docs/img/devilbox-stack-full.svg | 2 -- docs/img/devilbox-stack-full.xml | 1 - docs/img/devilbox-stack-smallest.svg | 2 -- docs/img/devilbox-stack-smallest.xml | 1 - 5 files changed, 6 insertions(+), 8 deletions(-) delete mode 100644 docs/img/devilbox-stack-full.svg delete mode 100644 docs/img/devilbox-stack-full.xml delete mode 100644 docs/img/devilbox-stack-smallest.svg delete mode 100644 docs/img/devilbox-stack-smallest.xml diff --git a/README.md b/README.md index cf0ca781..dce78e2f 100644 --- a/README.md +++ b/README.md @@ -65,12 +65,16 @@ have a look at the following diagrams and tables. #### Smallest Stack This is the smallest possible and fully functional stack you can run: -![Devilbox Stack](docs/img/devilbox-stack-smallest.svg) + + +> [Devilbox artwork](https://github.com/devilbox/artwork) #### Full Stack To better understand what is actually possible have a look at the full example: -![Devilbox Stack](docs/img/devilbox-stack-full.svg) + + +> [Devilbox artwork](https://github.com/devilbox/artwork) #### Available Container diff --git a/docs/img/devilbox-stack-full.svg b/docs/img/devilbox-stack-full.svg deleted file mode 100644 index f8869ec6..00000000 --- a/docs/img/devilbox-stack-full.svg +++ /dev/null @@ -1,2 +0,0 @@ - -
...
[Not supported by viewer]
Node
[Not supported by viewer]
Logstash
Logstash
Elastic Search
Elastic Search
Kibana
[Not supported by viewer]
Sphinx
[Not supported by viewer]
Redis
Redis
Memcd
Memcd
Mongo
Mongo
Devilbox Intranet
[Not supported by viewer]
php
[Not supported by viewer]
Redmin
[Not supported by viewer]
php
[Not supported by viewer]
pgAdmin
[Not supported by viewer]
PgSQL
PgSQL
Percona
Percona
Nginx
Nginx
Apache
Apache
Varnish
Varnish
MailHog
MailHog
Blackfire.io

Blackfire.io<br><br>
8.0
[Not supported by viewer]
7.4
[Not supported by viewer]
7.3
[Not supported by viewer]
5.4
[Not supported by viewer]
5.2
[Not supported by viewer]
5.3
[Not supported by viewer]
Rabbit
Rabbit
Bind
Bind
Xdebug
Xdebug
HAProxy
HAProxy
HTTPS
HTTPS
HTTP
HTTP
HTTP
HTTP
HTTP
HTTP
HTTPS
HTTPS
HTTP
HTTP
HTTP
HTTP
\ No newline at end of file diff --git a/docs/img/devilbox-stack-full.xml b/docs/img/devilbox-stack-full.xml deleted file mode 100644 index c9ac7011..00000000 --- a/docs/img/devilbox-stack-full.xml +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/img/devilbox-stack-smallest.svg b/docs/img/devilbox-stack-smallest.svg deleted file mode 100644 index 9d0977d3..00000000 --- a/docs/img/devilbox-stack-smallest.svg +++ /dev/null @@ -1,2 +0,0 @@ - -
Nginx
Nginx
Apache
Apache
X.Y
[Not supported by viewer]
HTTPS
HTTPS
HTTP
HTTP
\ No newline at end of file diff --git a/docs/img/devilbox-stack-smallest.xml b/docs/img/devilbox-stack-smallest.xml deleted file mode 100644 index 11ca41d5..00000000 --- a/docs/img/devilbox-stack-smallest.xml +++ /dev/null @@ -1 +0,0 @@ -3VpRd6I4FP41PpYDIQg+qtX2nO3Ocbed2ZknD0KEnEHCQqi6v34TCAiEKnbE2ulDJffCxXzfzZfcxIE+3eweYjvy/yQuCgZAdXcD/X4AALBM9p8b9rlBM4zc4MXYFaaD4Rn/h4RRFdYUuyip3UgJCSiO6kaHhCFyaM1mxzHZ1m9bk6D+1sj2kGR4duxAtv6DXeoL69CAB8cjwp5fvFobjnLPxi7uFl1JfNsl24pJnw30aUwIza82uykKOHgFMPlz8ze85TeLUUi7PICWw6+zP548OgundP/30iO+eqfnUV7tIBU9Fl+W7gsIYpKGLuJBtIE+2fqYoufIdrh3yzhnNp9uAuFe4yCYkoDE2bP62nKQ4zB7QmPyE1U8K8uAhso8cjdEz15RTNGuYhLdekBkg2i8Z7cIL9QFxPsi60R7W6FMFTa/yhYQ2WiLNPHK2Acg2YXA8gxctX5xdW1krVtxHToWWq0vgysYjW4OV310GlmPQRt173+pHvaqiKAexUVXLcWoIaNDQ0LGagEGqr3hMrxwxsn4nSDkdFp9HDjmaXCYPEf8Em+yKWGSfY6TKJ9VuFLZRWONdxzFCe8yZnPFk71CwYIkmGISMv+KUEo2lRvGAfa4g5KoiMxaPqV8FhvzzoG544aKnVJfVRz2LJivAuKxj9DD4e4uCtKkbDAHUaLQ64ck4R02MtyU8hsMZQoLWw8UWhKFXzgaEo+sf7SeyXWNDEmIGoIqTLZgyWFgoriFvg12Xf6a1qFzGFzts9qliNFBg5mRxAxsGVygt8FVvO22FBmMrI9WZPBBilwScsuKDG9fkRGjhiHo+EKRt9EdS0vK0QfzNAqI7XJRBqrGxHGusnE4txl5PnqPQp9BmvAajYwvFbuq0WaLEpi9kWpIpI4zQD65SJ/Pja7emEib8vR5dZGGsF6m6UAuJyzjmipkdigmepHoko4blmirw7x+PYleM+UV20MaaEh2qdh8zcw0AyVKaLMwSohoLtCGpmnWkuvTnITBPl1qEJoWUFVTAxrc4pEzWS6+PDD34nGRy3fy6p0p4WeQWkj4KY1oW2JDxbB647xt32IYUEFAjfzhvykpHHdJRg2jQdVgtDs42ZXHP78rP4pA7JvlsXLPJ58bzicdftTMQMOv30Z/zeNvu3SkzZ6ms/Uj6bJRxdZBY76VygdpQJyfLz4OG7tTjcHJnpjjoPCiHabfOazKiC3K8/aPrA11XbTvdwL3rLGvNBYoxqyrnM/cFrJu5+FUFRSGIh4sDIeAWWtfbTVDvjnnJSSNHXSM/vw+asceOpYmYpsVubXd5qNib7RkQWGLUWBT/Frfo25LDfGGBcHZ4C1qe6gphqlBNttm/836tGxYilVxj+rhc0xExEPySS9pbsrqeuN75qBJgbIsLiF5f2J3qL5+NbHfzJsb4bnkrmRWfSeXqno8UN9cdtjcLJYi6wDtBKuTCsFOYCcJzrfM7ZjK5jfnmwFbzWd/jXz4DBkAmsQ1l4tdM0A/FajnDIAdDqr6rl/YAry57W/IJXcbmwD2NHvDDiqXwyJyV5hVGabjsL8fvI+CRu+QMeWRLB/brp345fLv1OozaFQv0pLzzPKGpDTAIXtLcYyttq1nC43b7Dx+2q6Q9Ro7SEmQk8aY7hU+iS2jmFAWIyu2GseG5nwyhqCTjh1Pt7PKVq2lptdGign6Yl6eLR5fXhbPEv23UWlUuLAaw7TljP9XeSm8dTmHkoxdtQiBHXaDr6DudW03Wyqztu3UCxx1t4PSoTR7A5TjIF9Ey68KRcfTgt9Py9PwiJrfj6HKVsaymkt7bl0zpPsvRKryDtuUQgF6X8kgnzJwef+N1f3sH+7UC3p5jXohcWfNw8/X8pX+4UeA+ux/ \ No newline at end of file