You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
3.3 KiB
ReStructuredText
122 lines
3.3 KiB
ReStructuredText
Development environment
|
|
=======================
|
|
|
|
Docker containers
|
|
-----------------
|
|
|
|
The development environment is quite similar to the production one. You should always use
|
|
the ``master`` version when developing.
|
|
|
|
Building images
|
|
```````````````
|
|
|
|
We supply a separate ``test/build.yml`` file for
|
|
convenience. To build all Mailu containers:
|
|
|
|
.. code-block:: bash
|
|
|
|
docker-compose -f tests/build.yml build
|
|
|
|
The ``build.yml`` file has two variables:
|
|
|
|
#. ``$DOCKER_ORG``: First part of the image tag. Defaults to *mailu* and needs to be changed
|
|
only when pushing to your own Docker hub account.
|
|
#. ``$VERSION``: Last part of the image tag. Defaults to *local* to differentiate from pulled
|
|
images.
|
|
|
|
To re-build only specific containers at a later time.
|
|
|
|
.. code-block:: bash
|
|
|
|
docker-compose -f tests/build.yml build admin webdav
|
|
|
|
If you have to push the images to Docker Hub for testing in Docker Swarm or a remote
|
|
host, you have to define ``DOCKER_ORG`` (usually your Docker user-name) and login to
|
|
the hub.
|
|
|
|
.. code-block:: bash
|
|
|
|
docker login
|
|
Username: Foo
|
|
Password: Bar
|
|
export DOCKER_ORG="Foo"
|
|
export VERSION="feat-extra-app"
|
|
docker-compose -f tests/build.yml build
|
|
docker-compose -f tests/build.yml push
|
|
|
|
Running containers
|
|
``````````````````
|
|
|
|
To run the newly created images: ``cd`` to your project directory. Edit ``.env`` to set
|
|
``VERSION`` to the same value as used during the build, which defaults to ``local``.
|
|
After that you can run:
|
|
|
|
.. code-block:: bash
|
|
|
|
docker-compose up -d
|
|
|
|
If you wish to run commands inside a container, simply run (example):
|
|
|
|
.. code-block:: bash
|
|
|
|
docker-compose exec admin ls -lah /
|
|
|
|
Or if you wish to start a shell for debugging:
|
|
|
|
.. code-block:: bash
|
|
|
|
docker-compose exec admin sh
|
|
|
|
Finally, if you need to install packages inside the containers for debugging:
|
|
|
|
.. code-block:: bash
|
|
|
|
docker-compose exec admin apk add --no-cache package-name
|
|
|
|
Web administration
|
|
------------------
|
|
|
|
The administration Web interface requires a proper dev environment that can easily be setup using ``virtualenv`` (make sure you are using Python 3) :
|
|
|
|
.. code-block:: bash
|
|
|
|
cd core/admin
|
|
virtualenv .
|
|
source bin/activate
|
|
pip install -r requirements.txt
|
|
|
|
You can then export the path to the development database (use four slashes for absolute path):
|
|
|
|
.. code-block:: bash
|
|
|
|
export SQLALCHEMY_DATABASE_URI=sqlite:///path/to/dev.db
|
|
|
|
And finally run the server with debug enabled:
|
|
|
|
.. code-block:: bash
|
|
|
|
python run.py
|
|
|
|
Any change to the files will automatically restart the Web server and reload the files.
|
|
|
|
When using the development environment, a debugging toolbar is displayed on the right side
|
|
of the screen, that you can open to access query details, internal variables, etc.
|
|
|
|
Documentation
|
|
-------------
|
|
|
|
Documentation is maintained in the ``docs`` directory and are maintained as `reStructuredText`_ files. It is possible to run a local documentation server for reviewing purposes, using Docker:
|
|
|
|
.. code-block:: bash
|
|
|
|
cd <Mailu repo>
|
|
docker build -t docs docs
|
|
docker run -p 127.0.0.1:8080:80 docs
|
|
|
|
In a local build Docker always assumes the version to be master.
|
|
You can read the local documentation by navigating to http://localhost:8080/master.
|
|
|
|
.. note:: After modifying the documentation, the image needs to be rebuild and the container restarted for the changes to become visible.
|
|
|
|
.. _`reStructuredText`: http://docutils.sourceforge.net/rst.html
|