Production

The docker composition already bundles some powerful containers based on: Nginx, PostgreSQL, Redis, Celery, Django, Django REST Framework, Python and various related librairies. It thus provides a safe and continuous way to deploy your project from early development stages to more massive production environments.

Deploying

First, create the env/prod.env and env/prod.yml files from the samples:

cp env/prod.env.sample env/prod.env
cp env/prod.yml.sample env/prod.yml

Then modify all the paths (especially for the data and media), passwords and secret keys in the two files.

Finally, setup the composition environment at the root of the project:

echo "COMPOSE_FILE=docker compose.yml:env/prod.yml" > .env

Scaling

The Celery based worker container scales on all local CPUs automatically so that each processing pipelines is run asynchronously from its own thread. To scale on more machines, Kubernetes should offer evrything like demonstrated in these tutorials:

A Google Cloud based configuration is provided as an example in the k8s/ directory.