Docker Image

We automatically build a Docker image for every release. It uses gunicorn as a WSGI-server and still requires a database, redis and some ssl-terminating webserver/proxy to be set up. Also, static files need to be served by a webserver from a common volume.

The image is available on the Github Container Registry under

The image is based on the official python image. Tags are main for the latest commit on the main branch, latest for the latest release and v0.x.y for a specific release.

Deployment with Docker Compose

We provide a basic docker-compose file that adds nginx, postgres and redis to the mix and exposes the app on port 80. You still need to either provide an SSL-terminating proxy in front of it or configure the nginx container to do so.

The compose file can be found at deployment/compose/docker-compose.yml and on github. Feel free to use it as a starting point for your own deployment.

The container defines two volumes for the database and ephios data files. You should mount them to a persistent location on your host.

Make sure to change the environment variables in the compose file to your needs. Have a look at the configuration options.

To start the compose file and add a first superuser run:

# cd deployment/compose/
# docker compose up --build
# docker exec -it ephios-compose-app-1 python -m ephios createsuperuser

If you want to test the container without https, that’s only possible by changing it the compose file:

DEBUG: "True"

The first line enables debug mode and therefore disables a redirect from http to https. The second line disables trusting the X-Forwarded-Proto header set to https by the nginx container, which is required for djangos CSRF protection to not kick in on http requests.