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.
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.