Python: Django-Webanwendungen in Docker-Containern betreiben

Damit Django-Webapps im Docker-Container funktionieren, müssen gleich drei Container zusammenarbeiten. So richten Sie die Container ein.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht 3 Kommentare lesen
Django-Webanwendungen in Docker-Containern betreiben

(Bild: Albert Hulm)

Lesezeit: 13 Min.
Inhaltsverzeichnis

Fürs Containern von Django-Projekten bietet der DockerHub bisher wenig brauchbare Angebote. Das liegt daran, dass Python-Webanwendungen mit Virtualenv schon seit Langem in eigenen Umgebungen laufen, die Abhängigkeiten und Bibliotheksversionen von denen des Systems trennen. Wer auf dem Webserver aber nicht nur Python-Projekte betreibt, setzt besser auf Docker-Container – auch für Django.

Für Django im Container muss ein Prozess die Anfragen aus dem Internet an Views verteilen. Die Dokumentation betont ausdrücklich, dass Djangos Development-Server dafür nicht gedacht ist. Stattdessen kommt bei Python-Anwendungen das WSGI-Protokoll zum Einsatz. Das implementieren verschiedene WSGI-Server, der Verbreitetste ist uWSGI. Django erzeugt automatisch eine wsgi.py in der Haupt-App, an die uWSGI andockt.

Der WSGI-Server kümmert sich aber trotzdem nur um die Anfragen in den Python-Code. Die üblicherweise zu einem Django-Projekt gehörenden statischen Dateien wie Bilder, CSS oder Uploads von Usern sollte unbedingt ein im Vergleich zum Development-Server schnellerer Webserver wie Nginx oder Apache ausliefern.