From f7741d88f945360e9644d78e4dee2692c1e0d580 Mon Sep 17 00:00:00 2001 From: cytopia Date: Tue, 24 Mar 2020 09:21:30 +0100 Subject: [PATCH 1/9] Documentation: Python Flask --- .../snippets/additional-container.rst | 2 + .../docker-compose-override-tree-view.rst | 3 +- docs/custom-container/enable-python-flask.rst | 149 ++++++ .../setup-reverse-proxy-python-flask.rst | 449 ++++++++++++++++++ docs/index.rst | 2 + 5 files changed, 604 insertions(+), 1 deletion(-) create mode 100644 docs/custom-container/enable-python-flask.rst create mode 100644 docs/examples/setup-reverse-proxy-python-flask.rst diff --git a/docs/_includes/snippets/additional-container.rst b/docs/_includes/snippets/additional-container.rst index b3b8f8b14..49ca2302a 100644 --- a/docs/_includes/snippets/additional-container.rst +++ b/docs/_includes/snippets/additional-container.rst @@ -21,3 +21,5 @@ +-------------------------------------+-----------+-----------+----------------+ | ELK: Kibana | kibana | kibana | 172.16.238.242 | +-------------------------------------+-----------+-----------+----------------+ +| Python Flask | flask1 | flask1 | 172.16.238.250 | ++-------------------------------------+-----------+-----------+----------------+ diff --git a/docs/_includes/snippets/docker-compose-override-tree-view.rst b/docs/_includes/snippets/docker-compose-override-tree-view.rst index 688d740ba..9c02fb203 100644 --- a/docs/_includes/snippets/docker-compose-override-tree-view.rst +++ b/docs/_includes/snippets/docker-compose-override-tree-view.rst @@ -13,11 +13,12 @@ However, each example also exists in its standalone file as shown below: ├── docker-compose.override.yml-elk ├── docker-compose.override.yml-mailhog ├── docker-compose.override.yml-ngrok + ├── docker-compose.override.yml-python-flask ├── docker-compose.override.yml-rabbitmq ├── docker-compose.override.yml-solr ├── docker-compose.override.yml-varnish └── README.md - 0 directories, 8 files + 0 directories, 10 files .. seealso:: :ref:`custom_container_enable_all_additional_container` diff --git a/docs/custom-container/enable-python-flask.rst b/docs/custom-container/enable-python-flask.rst new file mode 100644 index 000000000..a526265dc --- /dev/null +++ b/docs/custom-container/enable-python-flask.rst @@ -0,0 +1,149 @@ +.. include:: /_includes/all.rst +.. include:: /_includes/snippets/__ANNOUNCEMENTS__.rst + +.. _custom_container_enable_python_flask: + +********************************* +Enable and configure Python Flask +********************************* + +This section will guide you through getting Python Flask integrated into the Devilbox. + +.. seealso:: + * :ref:`example_setup_reverse_proxy_python_flask` + * :ref:`custom_container_enable_all_additional_container` + * :ref:`docker_compose_override_yml_how_does_it_work` + + +**Table of Contents** + +.. contents:: :local: + + +Overview +======== + +Available overwrites +-------------------- + +.. include:: /_includes/snippets/docker-compose-override-tree-view.rst + + +Python Flask settings +--------------------- + +In case of Python Flask, the file is ``compose/docker-compose.override.yml-python-flask``. This file +must be copied into the root of the Devilbox git directory. + ++-----------------------+----------------------------------------------------------------------------------------------------------+ +| What | How and where | ++=======================+==========================================================================================================+ +| Example compose file | ``compose/docker-compose.override.yml-all`` or |br| ``compose/docker-compose.override.yml-python-flask`` | ++-----------------------+----------------------------------------------------------------------------------------------------------+ +| Container IP address | ``172.16.238.250`` | ++-----------------------+----------------------------------------------------------------------------------------------------------+ +| Container host name | ``flask1`` | ++-----------------------+----------------------------------------------------------------------------------------------------------+ +| Container name | ``flask1`` | ++-----------------------+----------------------------------------------------------------------------------------------------------+ +| Mount points | ``data/www``` | ++-----------------------+----------------------------------------------------------------------------------------------------------+ +| Exposed port | none | ++-----------------------+----------------------------------------------------------------------------------------------------------+ +| Available at | Devilbox intranet via Reverse Proxy configuration | ++-----------------------+----------------------------------------------------------------------------------------------------------+ +| Further configuration | :ref:`example_setup_reverse_proxy_python_flask` | ++-----------------------+----------------------------------------------------------------------------------------------------------+ + +Python Flask env variables +-------------------------- + +Additionally the following ``.env`` variables can be created for easy configuration: + ++------------------------------+-------------------+----------------------------------------------------------------------------+ +| Variable | Default value | Description | ++==============================+===================+============================================================================+ +| ``FLASK_PROJECT`` | none | Specifies your Python Flask project dir in data/www. | ++------------------------------+-------------------+----------------------------------------------------------------------------+ +| ``PYTHON_VERSION`` | ``3.8`` | Specifies the Python version to use for Flask. | ++------------------------------+-------------------+----------------------------------------------------------------------------+ + + +Instructions +============ + +1. Copy docker-compose.override.yml +----------------------------------- + +Copy the Python Flask Docker Compose overwrite file into the root of the Devilbox git directory. +(It must be at the same level as the default ``docker-compose.yml`` file). + +.. code-block:: bash + + host> cp compose/docker-compose.override.yml-python-flask docker-compose.override.yml + +.. seealso:: + * :ref:`docker_compose_override_yml` + * :ref:`add_your_own_docker_image` + * :ref:`overwrite_existing_docker_image` + + +2. Adjust ``.env`` settings (optional) +-------------------------------------- + +Python Flask is 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: + +.. code-block:: bash + :caption: .env + + # Project directory in data/www + FLASK_PROJECT=my-flask + + # Python version to choose + #PYTHON_VERSION=2.7 + #PYTHON_VERSION=3.5 + #PYTHON_VERSION=3.6 + #PYTHON_VERSION=3.7 + PYTHON_VERSION=3.8 + +.. seealso:: :ref:`env_file` + + +3. Configure Reverse Proxy +-------------------------- + +Before starting up the devilbox you will need to configure your python flask project and the +reverse proxy settings. + +.. seealso:: :ref:`example_setup_reverse_proxy_python_flask` + + +TL;DR +===== + +For the lazy readers, here are all commands required to get you started. +Simply copy and paste the following block into your terminal from the root of your Devilbox git +directory: + +.. code-block:: bash + + # Copy compose-override.yml into place + cp compose/docker-compose.override.yml-flask1 docker-compose.override.yml + + # Create .env variable + echo "# Project directory in data/www" > .env + echo "FLASK_PROJECT=my-flask" >> .env + echo "# Python version to choose" >> .env + echo "#PYTHON_VERSION=2.7" >> .env + echo "#PYTHON_VERSION=3.5" >> .env + echo "#PYTHON_VERSION=3.6" >> .env + echo "#PYTHON_VERSION=3.7" >> .env + echo "PYTHON_VERSION=3.8" >> .env + +before starting up the devilbox you will need to configure your python flask project and the +reverse proxy settings. + +.. seealso:: :ref:`example_setup_reverse_proxy_python_flask` diff --git a/docs/examples/setup-reverse-proxy-python-flask.rst b/docs/examples/setup-reverse-proxy-python-flask.rst new file mode 100644 index 000000000..9a5b93ffd --- /dev/null +++ b/docs/examples/setup-reverse-proxy-python-flask.rst @@ -0,0 +1,449 @@ +.. include:: /_includes/all.rst +.. include:: /_includes/snippets/__ANNOUNCEMENTS__.rst + +.. _example_setup_reverse_proxy_python_flask: + +******************************** +Setup reverse proxy Python Flask +******************************** + +This example will walk you through adding a version specific Python Flask docker container, +creating a simple Flask hello world application and have its requirements specified in +``requirements.txt`` automatically installed. Once setup, your application will be ready via +``docker-compose up``, proxied to the web server and can be reached via valid HTTPS. + + +.. note:: + This example is using an additional Docker image, so you are able to specify any Python version + you like and even be able to add multiple Docker images with different versions. + + +**Table of Contents** + +.. contents:: :local: + +Overview +======== + +The following configuration will be used: + ++--------------+--------------------------+-------------+------------+-----------------------------------------------+ +| Project name | VirtualHost directory | Database | TLD_SUFFIX | Project URL | ++==============+==========================+=============+============+===============================================+ +| my-flask | /shared/httpd/my-flask | - | loc | http://my-flask.loc |br| https://my-flask.loc | ++--------------+--------------------------+-------------+------------+-----------------------------------------------+ + +.. note:: + * Inside the Devilbox PHP container, projects are always in ``/shared/httpd/``. + * On your host operating system, projects are by default in ``./data/www/`` inside the + Devilbox git directory. This path can be changed via :ref:`env_httpd_datadir`. + +The following Devilbox configuration is required: + ++--------------+------------------------------------------------------------------------------------------------+ +| Service | Implications | ++==============+================================================================================================+ +| Webserver | Reverse proxy vhost-gen template need to be applied | ++--------------+------------------------------------------------------------------------------------------------+ +| Python Flask | Docker Compose override file must be applied. | ++--------------+------------------------------------------------------------------------------------------------+ +| ``.env`` | ``FLASK_PROJECT`` variable must be declared and set. | ++--------------+------------------------------------------------------------------------------------------------+ +| ``.env`` | ``PYTHON_VERSION`` variable can be declared and set. | ++--------------+------------------------------------------------------------------------------------------------+ + +Additionally we will set the listening port of the Flask appliation to ``3000``. + +.. seealso:: + For a detailed overview about the Compose file see: :ref:`custom_container_enable_python_flask` + + +Walk through +============ + +It will be ready in ten simple steps: + +1. Configure Python Flask project name and versoin +2. Enter the PHP container +3. Create a new VirtualHost directory +4. Create Flask hello world application +5. Symlink *virtual* docroot directory +6. Add reverse proxy vhost-gen config files +7. Copy Python Flask compose file +8. Setup DNS record +9. Restart the Devilbox +10. Visit http://my-flask.loc in your browser + + +1. Configure Python Flask project name and version +-------------------------------------------------- + +The Python Flask container will only serve a single project. In order for it to know where +to find your project, you will have to add an environment variable (``FLASK_PROJECT``), +telling it what the directory name of your project is. + +Additionally you can define the Python version (``PYTHON_VERSION``) under which you want to run +your Flask project. + +.. seealso:: Available Python versions can be seen here: https://github.com/devilbox/docker-python-flask + +Add the following variable to the very end of your ``.env`` file: + +.. code-block:: bash + :caption: .env + + FLASK_PROJECT=my-flask + + #PYTHON_VERSION=2.7 + #PYTHON_VERSION=3.5 + #PYTHON_VERSION=3.6 + #PYTHON_VERSION=3.7 + PYTHON_VERSION=3.8 + + +2. Enter the PHP container +-------------------------- + +All work will be done inside the PHP container as it provides you with all required command line +tools. + +Navigate to the Devilbox git directory and execute ``shell.sh`` (or ``shell.bat`` on Windows) to +enter the running PHP container. + +.. code-block:: bash + + host> ./shell.sh + +.. seealso:: + * :ref:`enter_the_php_container` + * :ref:`work_inside_the_php_container` + * :ref:`available_tools` + + +3. Create new VirtualHost directory +----------------------------------- + +The vhost directory defines the name under which your project will be available. |br| +( ``.TLD_SUFFIX`` will be the final URL ). + +.. code-block:: bash + + devilbox@php-7.0.20 in /shared/httpd $ mkdir my-flask + +.. seealso:: :ref:`env_tld_suffix` + + +4. Create Flask hello world application +--------------------------------------- + +4.1 Add your code +^^^^^^^^^^^^^^^^^ + +.. code-block:: bash + + # Navigate to your project directory + devilbox@php-7.0.20 in /shared/httpd $ cd my-flask + + # Create a directory which will hold the source code + devilbox@php-7.0.20 in /shared/httpd/my-flask $ mkdir app + + # Create the main.py file with your favourite editor + devilbox@php-7.0.20 in /shared/httpd/my-flask/app $ vi main.py + +.. code-block:: python + :caption: main.py + + """Flask example application.""" + from flask import Flask + + app = Flask(__name__) + + @app.route("/") + def index(): + """Serve the default index page.""" + return "Hello World!" + + + if __name__ == "__main__": + """Ensure Flask listens on all interfaces.""" + app.run(host='0.0.0.0') + +4.2 Add dependencies +^^^^^^^^^^^^^^^^^^^^ + +You can optionally add a ``requirements.txt`` file which will be read during startup. The Python +Flask container will then automatically install all Python libraries specified in that file. + +.. code-block:: bash + + # Navigate to your project directory + devilbox@php-7.0.20 in /shared/httpd $ cd my-flask + + # Create and open the file with your favourite editor + devilbox@php-7.0.20 in /shared/httpd/my-flask $ vi requirements.txt + +.. code-block:: ini + :caption: data/www/my-flask/requirements.txt + + requests + + +5. Symlink *virtual* docroot directory +-------------------------------------- + +.. code-block:: bash + + # Navigate to your project directory + devilbox@php-7.0.20 in /shared/httpd $ cd my-flask + + # Create the docroot directory + devilbox@php-7.0.20 in /shared/httpd/my-flask $ ln -s app htdocs + +.. seealso:: :ref:`env_httpd_docroot_dir` + + +6. Add reverse proxy vhost-gen config files +------------------------------------------- + +6.1 Create vhost-gen template directory +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Before we can copy the vhost-gen templates, we must create the ``.devilbox`` template directory +inside the project directory. + +.. code-block:: bash + + # Navigate to your project directory + devilbox@php-7.0.20 in /shared/httpd $ cd my-flask + + # Create the .devilbox template directory + devilbox@php-7.0.20 in /shared/httpd/my-flask $ mkdir .devilbox + + +.. seealso:: :ref:`env_httpd_template_dir` + +6.2 Copy vhost-gen templates +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Now we can copy and adjust the vhost-gen reverse proxy files for Apache 2.2, Apache 2.4 and Nginx. + + +The reverse vhost-gen templates are available in ``cfg/vhost-gen``: + +.. code-block:: bash + :emphasize-lines: 4,6,8 + + host> tree -L 1 cfg/vhost-gen/ + + cfg/vhost-gen/ + ├── apache22.yml-example-rproxy + ├── apache22.yml-example-vhost + ├── apache24.yml-example-rproxy + ├── apache24.yml-example-vhost + ├── nginx.yml-example-rproxy + ├── nginx.yml-example-vhost + └── README.md + + 0 directories, 7 files + +For this example we will copy all ``*-example-rproxy`` files into ``data/www/my-flask/.devilbox/`` +(Inside container: ``/shared/httpd/my-flask/.devilbox``) to ensure this will work with all web servers. + +.. code-block:: bash + + host> cd /path/to/devilbox + host> cp cfg/vhost-gen/apache22.yml-example-rproxy data/www/my-flask/.devilbox/apache22.yml + host> cp cfg/vhost-gen/apache24.yml-example-rproxy data/www/my-flask/.devilbox/apache24.yml + host> cp cfg/vhost-gen/nginx.yml-example-rproxy data/www/my-flask/.devilbox/nginx.yml + + +6.3 Adjust ports and backend +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +By default, all vhost-gen templates will forward requests to port ``8000`` into the PHP container. +Our current example however uses port ``3000`` and backend IP ``172.16.238.250`` (as defined +in the Flask docker compose override file), so we must change that accordingly for all three +templates. + +6.3.1 Adjust Apache 2.2 template +"""""""""""""""""""""""""""""""" + +Open the ``apache22.yml`` vhost-gen template in your project: + +.. code-block:: bash + + host> cd /path/to/devilbox + host> vi data/www/my-flask/.devilbox/apache22.yml + + +Find the two lines with ``ProxyPass`` and ``ProxyPassReverse`` and change the port from ``8000`` +to ``3000`` as well as the backend server from ``php`` to ``172.16.238.250``. + +.. code-block:: yaml + :caption: data/www/my-flask/.devilbox/apache22.yml + :emphasize-lines: 16,17 + + # ... more lines above ... # + + ### + ### Basic vHost skeleton + ### + vhost: | + + ServerName __VHOST_NAME__ + + CustomLog "__ACCESS_LOG__" combined + ErrorLog "__ERROR_LOG__" + + # Reverse Proxy definition (Ensure to adjust the port, currently '8000') + ProxyRequests On + ProxyPreserveHost On + ProxyPass / http://172.16.238.250:3000/ + ProxyPassReverse / http://172.16.238.250:3000/ + + # ... more lines below ... # + +6.3.2 Adjust Apache 2.4 template +"""""""""""""""""""""""""""""""" + +Open the ``apache24.yml`` vhost-gen template in your project: + +.. code-block:: bash + + host> cd /path/to/devilbox + host> vi data/www/my-flask/.devilbox/apache24.yml + + +Find the two lines with ``ProxyPass`` and ``ProxyPassReverse`` and change the port from ``8000`` +to ``3000`` + +.. code-block:: yaml + :caption: data/www/my-flask/.devilbox/apache24.yml + :emphasize-lines: 16,17 + + # ... more lines above ... # + + ### + ### Basic vHost skeleton + ### + vhost: | + + ServerName __VHOST_NAME__ + + CustomLog "__ACCESS_LOG__" combined + ErrorLog "__ERROR_LOG__" + + # Reverse Proxy definition (Ensure to adjust the port, currently '8000') + ProxyRequests On + ProxyPreserveHost On + ProxyPass / http://172.16.238.250:3000/ + ProxyPassReverse / http://172.16.238.250:3000/ + + # ... more lines below ... # + +6.3.3 Adjust Nginx template +""""""""""""""""""""""""""" + +Open the ``nginx.yml`` vhost-gen template in your project: + +.. code-block:: bash + + host> cd /path/to/devilbox + host> vi data/www/my-flask/.devilbox/nginx.yml + + +Find the lines with ``proxy_pass`` and change the port from ``8000`` to ``3000`` + +.. code-block:: yaml + :caption: data/www/my-flask/.devilbox/nginx.yml + :emphasize-lines: 18 + + # ... more lines above ... # + + ### + ### Basic vHost skeleton + ### + vhost: | + server { + listen __PORT____DEFAULT_VHOST__; + server_name __VHOST_NAME__; + + access_log "__ACCESS_LOG__" combined; + error_log "__ERROR_LOG__" warn; + + # Reverse Proxy definition (Ensure to adjust the port, currently '8000') + location / { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_pass http://172.16.238.250:3000; + } + + # ... more lines below ... # + + +7. Copy Python Flask compose file +--------------------------------- + +Python Flask comes with its own Docker container and can be added to the Devilbox stack via +the ``docker-compose.override.yml`` file. A fully functional template already exists in the +``compose/`` directory. All you will have to do is copy it over. + +.. code-block:: bash + + host> cd /path/to/devilbox + host> cp compose/docker-compose.override.yml-python-flask.yml docker-compose.override.yml + +.. seealso:: :ref:`docker_compose_override_yml` + + +8. DNS record +------------- + +If you **have** Auto DNS configured already, you can skip this section, because DNS entries will +be available automatically by the bundled DNS server. + +If you **don't have** Auto DNS configured, you will need to add the following line to your +host operating systems ``/etc/hosts`` file (or ``C:\Windows\System32\drivers\etc`` on Windows): + +.. code-block:: bash + :caption: /etc/hosts + + 127.0.0.1 my-flask.loc + +.. seealso:: + + * :ref:`howto_add_project_hosts_entry_on_mac` + * :ref:`howto_add_project_hosts_entry_on_win` + * :ref:`setup_auto_dns` + + +9. Restart the Devilbox +----------------------- + +Now for those changes to take affect, you will have to restart the Devilbox. + +.. code-block:: bash + + host> cd /path/to/devilbox + + # Stop the Devilbox + host> docker-compose down + host> docker-compose rm -f + + # Start the Devilbox + host> docker-compose up -d php httpd bind flask1 + + +10. Open your browser +--------------------- + +All set now, you can visit http://my-flask.loc or https://my-flask.loc in your browser. +The Python Flask application has been started up automatically and the reverse proxy will direct all +requests to it. + + + +Next steps +========== + +.. include:: /_includes/snippets/examples/next-steps.rst diff --git a/docs/index.rst b/docs/index.rst index 375ad45fd..742f5d6e8 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -122,6 +122,7 @@ host is ready to be served with your custom domain. custom-container/enable-elk-stack custom-container/enable-mailhog custom-container/enable-ngrok + custom-container/enable-python-flask custom-container/enable-rabbitmq custom-container/enable-solr custom-container/enable-varnish @@ -200,6 +201,7 @@ host is ready to be served with your custom domain. examples/setup-reverse-proxy-nodejs examples/setup-reverse-proxy-sphinx-docs + examples/setup-reverse-proxy-python-flask .. toctree:: From 02e3f8cf6eaca32a83454fc778011b16f80aca31 Mon Sep 17 00:00:00 2001 From: cytopia Date: Tue, 24 Mar 2020 09:21:56 +0100 Subject: [PATCH 2/9] Fix headlines --- docs/custom-container/enable-rabbitmq.rst | 2 +- docs/custom-container/enable-solr.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/custom-container/enable-rabbitmq.rst b/docs/custom-container/enable-rabbitmq.rst index 0b870243d..7bbdd981d 100644 --- a/docs/custom-container/enable-rabbitmq.rst +++ b/docs/custom-container/enable-rabbitmq.rst @@ -127,7 +127,7 @@ Add the following variables to ``.env`` and adjust them to your needs: .. seealso:: :ref:`env_file` -4. Start the Devilbox +3. Start the Devilbox --------------------- The final step is to start the Devilbox with RabbitMQ. diff --git a/docs/custom-container/enable-solr.rst b/docs/custom-container/enable-solr.rst index 949c056f9..35c18cf9a 100644 --- a/docs/custom-container/enable-solr.rst +++ b/docs/custom-container/enable-solr.rst @@ -114,7 +114,7 @@ Add the following variables to ``.env`` and adjust them to your needs: .. seealso:: :ref:`env_file` -4. Start the Devilbox +3. Start the Devilbox --------------------- The final step is to start the Devilbox with Solr. From a1fa4806e117d4c36991534fe5711bfc8c73ee71 Mon Sep 17 00:00:00 2001 From: cytopia Date: Tue, 24 Mar 2020 09:22:22 +0100 Subject: [PATCH 3/9] Add Python Flask logo --- docs/img/logo_tools/flask.png | Bin 0 -> 12081 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/img/logo_tools/flask.png diff --git a/docs/img/logo_tools/flask.png b/docs/img/logo_tools/flask.png new file mode 100644 index 0000000000000000000000000000000000000000..2b1eb61af85068949a23baf4ef8f8437b5c97ca5 GIT binary patch literal 12081 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 LB2^(_8uWhv_; Date: Tue, 24 Mar 2020 09:22:49 +0100 Subject: [PATCH 4/9] Ease linkcheck --- docs/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Makefile b/docs/Makefile index a4bd11042..08edb0c6b 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -30,7 +30,7 @@ else bash -c 'curl -Ss -o linkcheck -z linkcheck https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck 2>/dev/null' endif chmod +x linkcheck - ./linkcheck -l -k -r 60 -t 30 -e rst _includes/ + ./linkcheck -l -k -r 60 -t 30 -e rst -c '200,204' _includes/ linkcheck: docker run \ From c73d5a711fc1084f285b20abbed4b93aea04573c Mon Sep 17 00:00:00 2001 From: cytopia Date: Tue, 24 Mar 2020 09:24:42 +0100 Subject: [PATCH 5/9] Add Python Flask Compose files --- compose/docker-compose.override.yml-all | 28 ++++++++++++++++ ...cker-compose.override.yml-python-flask.yml | 33 +++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 compose/docker-compose.override.yml-python-flask.yml diff --git a/compose/docker-compose.override.yml-all b/compose/docker-compose.override.yml-all index 4fbd46962..52afdc9e4 100644 --- a/compose/docker-compose.override.yml-all +++ b/compose/docker-compose.override.yml-all @@ -208,6 +208,34 @@ services: depends_on: - elastic + # ----------------------------------------------------------------------------------------------- + # Python Flask + # ----------------------------------------------------------------------------------------------- + + # You can add more than one service here if you have multiple flask projects. + # Just duplicate the block and adjust service name, hostname and ip address. + flask1: + image: devilbox/python-flask:${PYTHON_VERSION:-3.8}-dev + hostname: flask1 + ports: + - "${LOCAL_LISTEN_ADDR}${HOST_PORT_FLASK:-3000}:${FLASK_PORT:-3000}" + networks: + app_net: + ipv4_address: 172.16.238.250 + volumes: + # Mount custom mass virtual hosting + - ${HOST_PATH_HTTPD_DATADIR}:/shared/httpd:rw${MOUNT_OPTIONS} + environment: + - FLASK_PROJECT=${FLASK_PROJECT} + - FLASK_PORT=${FLASK_PORT:-3000} + - FLASK_APP_DIR=${FLASK_APP_DIR:-htdocs} + - FLASK_APP_FILE=${FLASK_APP_FILE:-main.py} + - NEW_UID + - NEW_GID + depends_on: + - bind + - httpd + ### ### Volumes diff --git a/compose/docker-compose.override.yml-python-flask.yml b/compose/docker-compose.override.yml-python-flask.yml new file mode 100644 index 000000000..b08062f9e --- /dev/null +++ b/compose/docker-compose.override.yml-python-flask.yml @@ -0,0 +1,33 @@ +# vim: set ft=yaml: +--- +version: '2.3' + +services: + + # ----------------------------------------------------------------------------------------------- + # Python Flask + # ----------------------------------------------------------------------------------------------- + + # You can add more than one service here if you have multiple flask projects. + # Just duplicate the block and adjust service name, hostname and ip address. + flask1: + image: devilbox/python-flask:${PYTHON_VERSION:-3.8}-dev + hostname: flask1 + ports: + - "${LOCAL_LISTEN_ADDR}${HOST_PORT_FLASK:-3000}:${FLASK_PORT:-3000}" + networks: + app_net: + ipv4_address: 172.16.238.250 + volumes: + # Mount custom mass virtual hosting + - ${HOST_PATH_HTTPD_DATADIR}:/shared/httpd:rw${MOUNT_OPTIONS} + environment: + - FLASK_PROJECT=${FLASK_PROJECT} + - FLASK_PORT=${FLASK_PORT:-3000} + - FLASK_APP_DIR=${FLASK_APP_DIR:-htdocs} + - FLASK_APP_FILE=${FLASK_APP_FILE:-main.py} + - NEW_UID + - NEW_GID + depends_on: + - bind + - httpd From 0b118486b5f7bb934fb585baba5fa1cd87df059b Mon Sep 17 00:00:00 2001 From: cytopia Date: Tue, 24 Mar 2020 09:26:57 +0100 Subject: [PATCH 6/9] Update docs: available container --- docs/custom-container/enable-all-container.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/custom-container/enable-all-container.rst b/docs/custom-container/enable-all-container.rst index 7e5e65e49..7d8d3381e 100644 --- a/docs/custom-container/enable-all-container.rst +++ b/docs/custom-container/enable-all-container.rst @@ -60,6 +60,7 @@ In order to fully customize each container, refer to their own documentation sec * :ref:`custom_container_enable_elk_stack` * :ref:`custom_container_enable_mailhog` * :ref:`custom_container_enable_ngrok` + * :ref:`custom_container_enable_python_flask` * :ref:`custom_container_enable_rabbitmq` * :ref:`custom_container_enable_solr` * :ref:`custom_container_enable_varnish` From a097b5b4d82648666af0864a91cf1fd944c001fd Mon Sep 17 00:00:00 2001 From: cytopia Date: Tue, 24 Mar 2020 09:28:09 +0100 Subject: [PATCH 7/9] Update Readme --- README.md | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index a1665fefd..8ad4041b0 100644 --- a/README.md +++ b/README.md @@ -91,12 +91,12 @@ Only the webserver and PHP container are mandatory, all others are optional and 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 | | | | | Ngrok | +| Accel | Web | App | SQL | NoSQL | Queue / Search | ELK | Utils | +|---------|------------|----------------|------------|-----------|----------------|---------------|-----------| +| HAProxy | Apache | PHP | MariaDB | Memcached | RabbitMQ | ElasticSearch | Bind | +| Varnish | Nginx | Python (Flask) | MySQL | MongoDB | Solr | Logstash | Blackfire | +| | | | PerconaDB | Redis | | Kibana | MailHog | +| | | | PostgreSQL | | | | Ngrok | > **Documentation:** > [Available Container](https://devilbox.readthedocs.io/en/latest/readings/available-container.html) @@ -374,6 +374,7 @@ Additionally to the default stack, there are a variety of other services that ca + @@ -386,6 +387,7 @@ Additionally to the default stack, there are a variety of other services that ca + @@ -396,6 +398,7 @@ Additionally to the default stack, there are a variety of other services that ca + @@ -406,6 +409,7 @@ Additionally to the default stack, there are a variety of other services that ca + @@ -416,6 +420,7 @@ Additionally to the default stack, there are a variety of other services that ca + @@ -650,8 +655,8 @@ The following tools will assist you on creating new projects easily as well as h - - + + @@ -821,7 +826,7 @@ PHP modules can be enabled or disabled on demand to reflect the state of your ta You can also copy any custom modules into `mod/(php-fpm)-` and add a custom `*.ini` file to load them. -#### Supported Frameworks +#### Supported PHP Frameworks As far as tested there are no limitations and you can use any Framework or CMS just as you would on your live environment. Below are a few examples of extensively tested Frameworks and CMS: @@ -867,12 +872,13 @@ As far as tested there are no limitations and you can use any Framework or CMS j #### Supported reverse proxied applications As far as tested there are no limitations and you can use any application that creates an open port. -These ports will be reverse proxied by the web server and even allow you to use valid HTTPS for them. -By the built-in autostart feature of the Devilbox you can ensure that your application automatically +These ports will be reverse proxied by the web server and even allow you to use **valid HTTPS** for them. +By the built-in **autostart feature** of the Devilbox you can ensure that your application automatically starts up as soon as you run `docker-compose up`. -Devilbox -Devilbox +NodeJS +Python Flask +Sphinx > **Documentation:**
> [Setup reverse proxy NodeJs](https://devilbox.readthedocs.io/en/latest/examples/setup-reverse-proxy-nodejs.html) | From 6984d43ff965b1670e259b4e91cf68a64ae64985 Mon Sep 17 00:00:00 2001 From: cytopia Date: Tue, 24 Mar 2020 09:31:12 +0100 Subject: [PATCH 8/9] Update version and Changelog --- .devilbox/www/config.php | 4 ++-- CHANGELOG.md | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.devilbox/www/config.php b/.devilbox/www/config.php index e0cb6dd83..9d6fb2f09 100644 --- a/.devilbox/www/config.php +++ b/.devilbox/www/config.php @@ -13,8 +13,8 @@ putenv('RES_OPTIONS=retrans:1 retry:1 timeout:1 attempts:1'); -$DEVILBOX_VERSION = 'v1.6.3'; -$DEVILBOX_DATE = '2020-03-23'; +$DEVILBOX_VERSION = 'v1.7.0'; +$DEVILBOX_DATE = '2020-03-24'; $DEVILBOX_API_PAGE = 'devilbox-api/status.json'; // diff --git a/CHANGELOG.md b/CHANGELOG.md index 86f6af6ef..0ae1e5813 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,12 @@ major versions. ## Unreleased +## Release v1.7.0 (2020-03-24) + +#### Added +- Python Flask + + ## Bugfix Release v1.6.3 (2020-03-23) #### Fixed From 487b69331cb615a83f646d5cf887edba00fd66b4 Mon Sep 17 00:00:00 2001 From: cytopia Date: Tue, 24 Mar 2020 12:06:32 +0100 Subject: [PATCH 9/9] Use reproducible linkcheck --- docs/Makefile | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/docs/Makefile b/docs/Makefile index 08edb0c6b..22f642b5e 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -24,13 +24,11 @@ help: # ------------------------------------------------------------------------------------------------- linkcheck2: -ifeq ($(wildcard file1),) - bash -c 'curl -Ss -o linkcheck https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck 2>/dev/null' -else - bash -c 'curl -Ss -o linkcheck -z linkcheck https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck 2>/dev/null' -endif - chmod +x linkcheck - ./linkcheck -l -k -r 60 -t 30 -e rst -c '200,204' _includes/ + docker run \ + --rm \ + $$(tty -s && echo "-it" || echo) \ + -v $(PWD):/data \ + cytopia/linkcheck -l -k -r 60 -t 30 -e rst -c '200,204' _includes/ linkcheck: docker run \
Python (Flask) Blackfire ELK MailHog
2.7 1.8 5.x.y v1.0.04
... ... 6.x.y latest5
3.7 1.18.0 7.x.y 6
3.8 latest pm2 is Node.js Production Process Manager with a built-in Load Balancer.
:wrench: scss-lintscss-lint is a css/scss linter.:wrench: stylelintstylelint is a css/scss linter.
:wrench: symfony installer