A Cookiecutter template for a Django project using Docker. A description of the rationale behind this template is in this blog post.
What is included?
- Packages for Django project and an app
- Setup for Celery, uWSGI, debug-toolbar etc
- Setup for testing using Pytest.
- Reloader (container that restarts other containers when files change, for development).
Install cookiecutter and run:
cookiecutter gh:evozon/django-docker
You will be asked for these fields:
Template variable | Default | Description |
---|---|---|
name |
"Nameless" |
Project name, used in headings (readme, etc). |
repo_name |
"python-nameless" |
The project's root directory name. |
django_project_name |
"nameless_project" |
Django project name (a package that contains settings and root urls). |
compose_project_name |
"nmls" |
Docker Compose project name (used for the COMPOSE_PROJECT_NAME setting). A short name is suggested to avoid
typing a lot when using Docker directly (eg: docker exec nmls_web_1 ... ) |
django_app_name |
"nameless" |
Django app name. |
short_description |
"An example package [...]" |
One line description of the project (used in README.rst ). |
If you made some wrong choices during generation you can regenerate it. There are two options:
Force Cookiecutter to override the files:
cookiecutter --overwrite-if-exists --config-file=directory-of-project/.cookiecutterrc gh:evozon/django-docker
After installing cookiepatcher run:
cookiepatcher gh:evozon/django-docker directory-of-project
There will be a base image, so for an accurate image building process do this:
docker-compose build --pull base docker-compose build
To start the project run:
docker-compose up
The project will provide a small shim for running tests, try:
./test.sh --help
Working with the project is the usual docker-compose up
and such, nothing special or unexpected.