Einführung In diesem Artikel stellen wir vor, wie Django-Projekte in Docker mithilfe der Bereitstellung von Django + UWSGI + Nginx bereitgestellt werden. Da es sich bei der Aufzeichnung um einen Lernvorgang handelt, wird immer die aktuell höhere Version verwendet.
Okay, kommen wir nach einer kurzen Einführung zum Punkt. Erstellen Sie ein Arbeitsverzeichnis
Erklären Sie kurz jede Datei docker-compose.yml: Docker Compose ist ein von Docker bereitgestelltes Befehlszeilentool zum Definieren und Ausführen von Anwendungen, die aus mehreren Containern bestehen. Mit Compose können wir die Dienste einer Anwendung deklarativ über eine YAML-Datei definieren und die Anwendung mit einem einzigen Befehl erstellen und starten. Am Anfang habe ich docker-compose.yml nicht verwendet Dockerfile: Dies ist eine Textdatei, die zum Erstellen eines Images verwendet wird. Der Textinhalt enthält die Anweisungen und Anleitungen, die zum Erstellen des Images erforderlich sind. my_django: ist ein neu erstelltes Django-Projekt, bei dem hauptsächlich ALLOWED_HOSTS = [] in ALLOWED_HOSTS = ["*"] geändert wurde. nginxconf: ist ein Ordner, der die Nginx-Konfiguration und Dockerfile-Dateien zum Erstellen eines Nginx-Image enthält. pip.conf: Hier geht es um die Pip-Konfiguration, die hauptsächlich für Pip verwendet wird, um das Herunterladen zu beschleunigen. uwsgi_conf.ini: uwsgi-Konfigurationsdatei
Erstellen Sie ein UWSGI-Image Erstellen Sie ein uwsgi-Image gemäß der Dockerfile-Datei und führen Sie es aus. VON python:3.8.3 # Erstellen Sie ein Verzeichnis RUN mkdir -p /usr/src/app # Legen Sie das Arbeitsverzeichnis WORKDIR /usr/src/app fest # Kopieren Sie die Datei pip.conf nach /root/.pip/pip.conf KOPIEREN Sie pip.conf /root/.pip/pip.conf # Pip aktualisieren Führen Sie den Befehl „pip install --upgrade pip“ aus. # Laden Sie Django und uwsgi herunter. In allgemeinen Projekten müssen Sie nur require.txt herunterladen. Führen Sie den Befehl „pip install django“ und „pip install uwsgi“ aus. #Kopieren Sie alle Dateien im aktuellen Verzeichnis, kopieren Sie nur das Projekt und die uwsgi-Konfigurationsdatei KOPIEREN . /usr/src/app/ # Starten Sie uwsgi zur Laufzeit CMD uwsgi --ini uwsgi_conf.ini # Ports freigeben EXPOSE 80 8080 8000 8888 uwsgi-Konfigurationsdatei, offizielle Website [Benutzer] # Projektverzeichnis. Da es sich im aktuellen Verzeichnis befindet, schreiben Sie einfach chdir = my_django # uwsgi-Startdatei, wsgi.py unter dem Projekt Modul = my_django.wsgi # Erlaube die Existenz des Hauptthreads (true) Master = wahr # Anzahl der Prozesse Prozesse = 1 # Wird verwendet, um den Port anzugeben, auf dem das Projekt ausgeführt wird. Sie können Socket und http verwenden. Ich verwende http zur einfacheren Anzeige. http = 0.0.0.0:8000 # Socket = 0.0.0.0:8000 # http = 10.0.0.10:8000 # Socket = 10.0.0.10:8008 # socket = /usr/src/app/my_django/uwsgi.sock # Umgebung automatisch bereinigen, wenn der Server beendet wird, Unix-Socket-Datei und PID-Datei löschen vacuum = true OK, mit diesen beiden Dateien können Sie ein UWSGI-Image erstellen. Führen Sie den folgenden Befehl aus, um das Image zu generieren.
Verwenden Sie Ausführen des uwsgi-Image Nachdem das Bild erstellt wurde, besteht der nächste Schritt darin, das Bild auszuführen und im Browser anzuzeigen. Verwenden Sie den folgenden Befehl direkt, um den Port für eine einfache Anzeige freizugeben. docker run --rm -it --name webuwsgi -p 8000:8000 myuwsgi Ergebnisse der Operation Als nächstes können Sie im Browser darauf zugreifen. Geben Sie die IP und den Port ein, um auf 192.168.56.102:8000 zuzugreifen. Dies beweist, dass das uwsgi-Image erstellt wurde und erfolgreich ausgeführt werden kann. Der nächste Schritt besteht darin, ein Nginx-Image für den Reverse-Proxy zu erstellen Erstellen eines Nginx-Image Geben Sie zuerst das Verzeichnis nginxconf ein, führen Sie zur einfachen Bedienung VON nginx # Löschen Sie die Standardkonfigurationsdatei von nginx RUN rm -rf /etc/nginx/conf.d/default.conf # Kopieren Sie die Konfigurationsdatei im aktuellen Verzeichnis in das Verzeichnis /etc/nginx/conf.d/. COPY nginx.conf /etc/nginx/conf.d/nginx.conf AUSSETZEN 80 Bearbeiten Sie die Datei nginx.conf Server { # Abhörport listen 80; #Hostname Servername Localhost; Standort / { uwsgi_params einschließen; # Die IP und der Port des uwsgi-Dienstes, Proxy-Passwort http://192.167.0.2:8000; # Wenn uwsgi einen Socket verwendet, können Sie ihn direkt verwenden. # uwsgi_pass 192.167.0.2:8000; Proxy_Set_Header X-Real-IP $Remote_Addr; Proxy_Set_Header Host $host; proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for; } Standort /static { # Statischer Dateialias /usr/share/nginx/html/static; } } Die IP des uwsgi-Containers kann mit
Überprüfen OK, der nächste Schritt besteht darin, ein Nginx-Image zu erstellen. Verwenden Sie den folgenden Befehl, um ein Image zu erstellen docker build -t mynginx ./ Verwenden Sie Docker-Images, um das Image anzuzeigen Führen Sie das Nginx-Image aus Nachdem das Bild erstellt wurde, besteht der nächste Schritt darin, das Bild auszuführen und im Browser anzuzeigen. Verwenden Sie den folgenden Befehl direkt, um den Port für eine einfache Anzeige freizugeben. docker run --rm -it -p 80:80 --name nginxweb mynginx Ergebnisse der Operation Anschließend können Sie im Browser darauf zugreifen und direkt die IP-Adresse 192.168.56.102 eingeben. So stellen Sie das Django-Projekt mit uwsgi+nginx auf Docker bereit. Als Nächstes verwenden wir Verwenden von Docker-Compose Bearbeiten Sie die Datei docker-compose.yml, weisen Sie eine IP-Adresse zu und nehmen Sie einige Änderungen an den Konfigurationsdateien von nginx und uwsgi vor. docker-compose.yml-Datei Version: '3' Leistungen: Version: '3' Leistungen: uwsgi: bauen: Kontext: ./ Bild: uwsgi Neustart: immer Netzwerke: Django: IPv4-Adresse: 10.0.0.10 Häfen: - "8000:8000" Bände: – /root/uwsgidocker/:/usr/src/app/:rw Befehl: uwsgi --ini /usr/src/app/uwsgi_conf.ini nginx: Bild: myweb bauen: Kontext: ./nginxconf Häfen: - "80:80" - „8080:8080“ Bände: – /root/uwsgidocker/nginxconf/nginx.conf:/etc/nginx/conf.d/nginx.conf:rw Neustart: immer privilegiert: wahr Netzwerke: Django: IPv4-Adresse: 10.0.0.20 Netzwerke: Django: ipam: Konfiguration: - Subnetz: 10.0.0.0/24 [Benutzer] chdir = mein_django Modul = my_django.wsgi uid = root gid = root Master = wahr Prozesse = 1 # http = 0.0.0.0:8000 # Socket = 0.0.0.0:8000 # http = 10.0.0.10:8000 Socket = 10.0.0.10:8008 # socket = /usr/src/app/my_django/uwsgi.sock Vakuum = wahr nginx.conf Datei, ändern Sie in ähnlicher Weise die IP Server { hören Sie 80; Servername localhost; Standort / { uwsgi_params einschließen; # Proxy-Passwort http://192.167.0.2:8000; # uwsgi_pass 192.167.0.2:8000; # Proxy_Set_Header Host $host; # Proxy_Umleitung aus; # proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for; # uwsgi_pass unix:/usr/src/app/my_django/uwsgi.sock; uwsgi_pass 10.0.0.10:8008; Proxy_Set_Header X-Real-IP $Remote_Addr; Proxy_Set_Header Host $host; proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for; } Standort /static { Alias /usr/share/nginx/html/static; } } OK, nach einer kleinen Änderung der Konfiguration können Sie es direkt ausführen docker-compose ausführen 1. Start-Image erstellen und Container starten docker-compose up oder docker-compose up -d im Hintergrund ausführen 2. Stoppen docker-compose stop #Stoppen Sie den Container 3. Stoppen und löschen Sie den Container Docker-Compose nach unten 4. Geben Sie die IP-Adresse ein und greifen Sie auf die Ergebnisse zu. Finden Sie die Verwendung Zusammenfassen Dies ist das Ende dieses Artikels über das ausführliche Tutorial zum Bereitstellen von Django-Projekten auf CentOS8 mit Docker. Weitere Informationen zum Bereitstellen von Django-Projekten auf Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: LINUX Prüft, ob der Port belegt ist
>>: MySQL-Abfrage gibt an, dass das Feld keine Zahl und kein Komma SQL ist
Was ist Vuex vuex: ist ein speziell für vue.js en...
1. MySQL-Datenbank auf dem Mac installieren 1. My...
In diesem Artikel wird der spezifische Code von j...
Ich bin schon vor langer Zeit mit CSS in Berührun...
Inhaltsverzeichnis Überblick Beispiel Warum wird ...
Was ist Fuser Command? Der Befehl fuser ist ein s...
Verwenden Sie apk add ansible, um den Ansible-Die...
Heute habe ich einen kleinen Vorgeschmack auf IE8...
Systemumgebung: Windows 7 1. Docker installieren ...
Grundlegende Vorbereitung Für diese Implementieru...
Umgebungseinführung Betriebssystem: Centos 7.4 Za...
Hinweis: Diese Methode ist nur auf WebKit-basiert...
Langsame Protokollabfragefunktion Die Hauptfunkti...
Inhaltsverzeichnis Vorwort 1. Was ist Phantomlese...
Inhaltsverzeichnis Ereignisschleife miscroTask (M...