Sprachen- und Framework-Handbü...
Django-Container auf Back4app: Bereitstellung & Skalierung
16 min
back4app containers ist eine leistungsstarke plattform zum hosten von django anwendungen mit der fähigkeit, dockerisierte django apps automatisch bereitzustellen, können sie ihr projekt in einer skalierbaren und flexiblen umgebung mit leichtigkeit starten in diesem leitfaden führen wir sie durch den prozess der vorbereitung und bereitstellung ihrer django anwendung auf back4app containers in diesem umfassenden leitfaden führen wir sie durch den prozess der vorbereitung und bereitstellung ihrer django anwendung auf back4app containers und decken alles von einfachen projekten bis hin zu komplexeren setups ab wenn sie fragen oder kommentare haben, können sie gerne an der diskussion im #containers kanal auf der back4app community auf slack teilnehmen, um spezifische diskussionen zu django auf back4app containers zu führen sie können uns jederzeit auch unter community\@back4app com kontaktieren wenn sie jederzeit ein funktionierendes beispielprojekt für django auf back4app containern überprüfen möchten, gehen sie zu https //github com/templates back4app/containers python flask sample 1 bereiten sie ihre django anwendung vor stellen sie sicher, dass ihre django anwendung richtig strukturiert ist und alle erforderlichen dateien, einschließlich vorlagen und statischer dateien, im projektverzeichnis organisiert sind für komplexere projekte stellen sie sicher, dass sie eine ordnungsgemäße app fabrik setup haben und die besten praktiken von django befolgen 2 erstellen sie eine requirements txt datei liste alle erforderlichen abhängigkeiten und deren versionen in einer requirements txt datei auf diese datei wird vom dockerfile verwendet, um die notwendigen pakete beim erstellen des docker images zu installieren hier ist ein beispiel für eine requirements txt , die für eine django anwendung gedacht ist und einige gängige abhängigkeiten enthält, die du in verschiedenen projekten verwenden könntest fühle dich frei, pakete nach bedarf für deine spezifische anwendung hinzuzufügen oder zu entfernen requirements txt django==3 2 10 gunicorn==20 1 0 psycopg2 binary==2 9 1 djangorestframework==3 12 4 django cors headers==3 9 0 django environ==0 4 5 django extensions==3 1 3 django filter==21 1 django rest auth==0 9 5 django allauth==0 47 0 requests==2 27 1 3 erstelle ein dockerfile schreibe ein dockerfile, um das docker image deiner anwendung zu definieren stelle sicher, dass du ein geeignetes basis image (wie python 3 x slim) verwendest, die abhängigkeiten aus der requirements txt datei installierst, deine projektdateien kopierst, den richtigen port freigibst und den entsprechenden befehl angibst, um deine django anwendung zu starten (z b mit gunicorn oder uwsgi) beispiel 1 einfache django anwendung mit gunicorn dieses dockerfile ist für eine einfache django anwendung, die gunicorn als wsgi server verwendet es installiert die notwendigen pakete aus der requirements txt datei, kopiert die projektdateien und gibt den port 8000 für den gunicorn server frei der cmd befehl gibt den befehl an, um den gunicorn server zu starten, der an 0 0 0 0 8000 gebunden ist \# base image from python 3 9 slim \# working directory workdir /app \# copy requirements file and install dependencies copy requirements txt requirements txt run pip install no cache dir r requirements txt \# copy the rest of the project files copy \# expose the server port expose 8000 \# command to start the server cmd \["gunicorn", " bind", "0 0 0 0 8000", "myproject wsgi"] beispiel 2 django anwendung mit uwsgi und nginx dieses dockerfile ist für eine komplexere django anwendung, die uwsgi als wsgi server und nginx als reverse proxy server verwendet es installiert build abhängigkeiten für uwsgi und nginx und installiert dann diese pakete zusammen mit uwsgi über pip anschließend kopiert es die projektdateien und die requirements txt datei und öffnet den port 8000 für den uwsgi server der cmd befehl gibt den befehl zum starten von uwsgi an, wobei eine separate konfigurationsdatei namens "myproject uwsgi ini" verwendet wird das dockerfile konfiguriert auch nginx, indem es die standardkonfigurationsdatei entfernt, eine benutzerdefinierte nginx konfigurationsdatei namens "myproject nginx conf" in das entsprechende verzeichnis kopiert und einen symlink erstellt, um die konfiguration zu aktivieren die nginx konfigurationsdatei gibt an, dass nginx auf port 8000 hören und anfragen an den uwsgi server weiterleiten soll, der im selben docker container läuft \# base image from python 3 9 slim \# install build dependencies and curl run apt get update && apt get install y no install recommends \\ build essential \\ libssl dev \\ libpcre3 dev \\ curl \\ && rm rf /var/lib/apt/lists/ \# install uwsgi and nginx run pip install uwsgi run apt get update && apt get install y no install recommends nginx \# configure nginx run rm /etc/nginx/sites enabled/default copy myproject nginx conf /etc/nginx/sites available/ run ln s /etc/nginx/sites available/myproject nginx conf /etc/nginx/sites enabled/ \# copy requirements file and install dependencies copy requirements txt requirements txt run pip install no cache dir r requirements txt \# copy the rest of the project files copy \# expose the server port expose 8000 \# start uwsgi cmd \["uwsgi", " ini", "/app/myproject uwsgi ini"] stellen sie sicher, dass sie "myproject" durch den tatsächlichen projektnamen in den dockerfiles ersetzen außerdem müssen sie für die uwsgi und nginx konfiguration eine datei "myproject nginx conf" und eine datei "myproject uwsgi ini" in ihrem projektverzeichnis erstellen, die die entsprechende konfiguration für nginx und uwsgi enthalten 4 testen sie ihre anwendung lokal nachdem sie ihre dockerfile erstellt haben, können sie ihre django anwendung lokal testen, bevor sie sie in back4app containers bereitstellen dies ist ein wichtiger schritt, um sicherzustellen, dass alles wie erwartet funktioniert und um probleme oder fehler während der bereitstellung zu vermeiden durch das testen ihrer anwendung lokal können sie probleme oder fehler erkennen, bevor sie in back4app containers bereitstellen wenn sie auf probleme stoßen, stellen sie sicher, dass sie diese beheben, bevor sie mit dem nächsten schritt fortfahren docker build t your app name docker run p 8080 8080 your app name 5 pushen sie ihr projekt in ein git repository erstellen sie eine gitignore datei, um unnötige oder sensible dateien aus ihrem repository auszuschließen (z b pycache , env , pyc , usw ) initialisieren sie ein git repository, committen sie ihre projektdateien und pushen sie sie in ein remote repository (z b auf github) 6 deployen sie ihre anwendung auf back4app containern nachdem sie ihr back4app konto erstellt haben, können sie die in den docs aufgeführten schritte befolgen 1 verbinden sie ihr github repo mit back4app 2 bereiten sie ihr projekt für die bereitstellung vor zusammenfassend werden container den anweisungen in ihrer dockerfile folgen und beginnen, ihre app zu erstellen 7 überwachen sie die bereitstellung behalten sie die bereitstellungsprotokolle und den status im back4app containers dashboard im auge beheben sie alle fehler oder probleme, die während der bereitstellung auftreten bei komplexeren projekten stellen sie sicher, dass alle erforderlichen dienste (wie datenbanken oder externe apis) korrekt konfiguriert und zugänglich sind beachten sie, dass sie auch einen abschnitt namens protokolle haben, der alle laufenden protokolle für ihre app auflistet, und es ist auch wichtig, darauf zu achten, um zu überprüfen, ob sie ein problem mit ihrer app haben 8 fehlerbehebung häufige bereitstellungsfehler sind aufgeführt hier weitere mögliche häufige fehler bei der bereitstellung von flask anwendungen sind falsche hostkonfiguration django anwendungen sollten so konfiguriert werden, dass sie auf dem host 0 0 0 0 laufen, wenn sie auf back4app containers bereitgestellt werden wenn ihre anwendung localhost oder 127 0 0 1 , verwendet, ist sie möglicherweise nicht extern zugänglich stellen sie sicher, dass ihre django einstellungsdatei ( settings py ) die folgende zeile enthält allowed hosts = \[' '] wenn ihre anwendung weiterhin nicht zugänglich ist, überprüfen sie ihre dockerfile, um sicherzustellen, dass der richtige port freigegeben ist (z b expose 8000 für port 8000) inkompatible oder fehlende abhängigkeiten stellen sie sicher, dass alle erforderlichen abhängigkeiten in ihrer requirements txt datei aufgeführt sind und dass ihre versionen miteinander und mit ihrem anwendungscode kompatibel sind fehlende oder inkompatible abhängigkeiten können zu laufzeitfehlern führen stellen sie sicher, dass alle erforderlichen abhängigkeiten in ihrem docker container installiert sind, indem sie den docker run befehl mit den it flags ausführen und eine shell im container öffnen docker run it myproject container /bin/bash sobald sie sich im container befinden, überprüfen sie, ob alle erforderlichen abhängigkeiten mit pip list , installiert sind wenn eine abhängigkeit fehlt, installieren sie sie mit pip install \<dependency> datenbankverbindungsprobleme wenn ihre django anwendung auf eine datenbank angewiesen ist, stellen sie sicher, dass die verbindungszeichenfolge und die anmeldeinformationen korrekt in der anwendungs konfiguration eingerichtet sind überprüfen sie auch, ob die datenbank von der back4app container umgebung aus erreichbar ist überprüfen sie ihre django einstellungsdatei ( settings py ), um sicherzustellen, dass die datenbankkonfiguration korrekt ist möglicherweise müssen sie je nach ihrer konfiguration den datenbank host, port, namen, benutzer und passwort angeben stellen sie sicher, dass ihr docker container zugriff auf die datenbank hat, indem sie überprüfen, ob die datenbank von innerhalb des containers erreichbar ist sie können dies tun, indem sie eine shell im container öffnen ( docker run it myproject container /bin/bash ) und ping oder telnet verwenden, um eine verbindung zur datenbank herzustellen anwendungsabstürze oder unbehandelte ausnahmen nicht behandelte ausnahmen oder abstürze in ihrem django anwendungscode können zu bereitstellungsfehlern oder unerwartetem verhalten führen überprüfen sie ihre anwendungsprotokolle auf fehlermeldungen und beheben sie alle probleme in ihrem code überprüfen sie die containerprotokolle, indem sie docker logs myproject container ausführen, um zu sehen, ob fehler oder ausnahmen auftreten verwenden sie ein tool wie sentry, um fehler in ihrer anwendung zu verfolgen und zu überwachen falsch konfigurierter wsgi server stellen sie sicher, dass ihr wsgi server (z b gunicorn oder uwsgi) in ihrem dockerfile korrekt konfiguriert ist und dass er ihre django anwendung mit dem richtigen einstiegspunkt startet (z b myproject wsgi\ application ) überprüfen sie, ob der richtige server installiert ist und als abhängigkeit in ihrer requirements txt datei aufgeführt ist ungültige umgebungsvariablen oder konfiguration überprüfen sie, ob ihre anwendung auf bestimmte umgebungsvariablen oder konfigurationsdateien angewiesen ist, und stellen sie sicher, dass diese im back4app container umfeld korrekt eingerichtet sind setzen sie alle erforderlichen umgebungsvariablen in ihrem dockerfile mit dem env befehl überprüfen sie, ob alle von ihrer anwendung benötigten konfigurationsdateien korrekt als volumes im docker container eingebunden sind wenn sie auf andere probleme stoßen, während sie ihre django anwendung auf back4app containern bereitstellen, kontaktieren sie uns unter community\@back4app com 9 skalieren sie ihre anwendung für komplexere projekte, die zusätzliche ressourcen oder horizontale/vertikale skalierung erfordern, sollten sie in betracht ziehen, ihren back4app container plan zu aktualisieren, um erhöhten verkehr und last zu bewältigen 10 beispielanwendung für ein beispielprojekt einer django anwendung können sie gehen zu https //github com/templates back4app/containers python django https //github com/templates back4app/containers python django