Example using Docker, Django, multiple Postgres databases, NginX, Gunicorn, pipenv, GitLab CI and tox
This is a Docker setup for a web application based on Django.
- The Django application is served by Gunicorn (WSGI application).
- We use NginX as reverse proxy and static files server. Static and media files are persistently stored in volumes.
- Multiple Postgres databases can be used. Data are persistently stored in volumes.
- Python dependencies are managed through pipenv, with
PipfileandPipfile.lock. - Support for multiple environment settings (variable
DJANGO_SETTINGS_MODULEis passed to thedjangoappservice). - Tests are run using tox, pytest, and other tools such as safety, bandit, isort and prospector.
- Continuous Integration is configured for GitLab with
.gitlab-ci.yml. CI follows a Build-Test-Release flow. WARNING: this part is not fully functional yet.
Also a Makefile is available for convenience. You might need to use sudo make
instead of just make because docker and docker-compose commands often needs
admin privilege.
You need to install Docker and Docker-Compose.
docker-compose build or make build.
docker-compose run --rm djangoapp hello/manage.py migrate or make migrate.
docker-compose run --rm djangoapp hello/manage.py collectstatic --no-input' or make collectstatic.
docker-compose up or make run.
make checksafetymake checkstylemake testmake coverage
Docker Compose with NginX, Django, Gunicorn and multiple Postgres databases
Software licensed under the ISC license.