Detailliertes Tutorial zum Bereitstellen eines Django-Projekts mit Docker auf CentOS8

Detailliertes Tutorial zum Bereitstellen eines Django-Projekts mit Docker auf CentOS8

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.

Die Python-Version ist 3.8.3
Die Django-Version ist 3.0.6
Die Nginx-Version ist 1.17.10

Okay, kommen wir nach einer kurzen Einführung zum Punkt.

Erstellen Sie ein Arbeitsverzeichnis

Erstellen Sie ein Arbeitsverzeichnis zum Speichern des Projekts und von Dateien wie Dockerfile.

mkdir uwsgidocker

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

Hinweis: In der Datei settings.py im Django-Projekt müssen Sie ALLOWED_HOSTS = [] in ALLOWED_HOSTS = [" * "] ändern.

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.

docker build -t myuwsgi ./

Verwenden Sie docker images , um Bilder anzuzeigen

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 cd nginxconf/ aus und bearbeiten Sie dann die Dockerfile-Datei

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 docker inspect Container Name überprüft werden.

Docker-Inspektion für WebuWSGI

Ü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 uwsgi+nginx+docker-compose um das Django-Projekt bereitzustellen.

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

uwsgi_conf.ini Datei, ändern Sie einfach die IP

[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 docker-compose sehr praktisch? Ich empfehle Ihnen, es zu verwenden!

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:
  • Detaillierte Erläuterung der Bereitstellung von Django auf CentOS7
  • Stellen Sie das Django-Projekt auf dem CentOs-Server bereit
  • Detaillierte Erläuterung des gesamten Prozesses des Bereitstellungsprojekts centos7+django+python3+mysql+Alibaba Cloud
  • Tutorial zum Bereitstellen von nginx+uwsgi in Django-Projekten unter Centos8
  • So stellen Sie den Django-Dienst nginx+uwsgi auf Centos bereit
  • Detailliertes Tutorial zum Bereitstellen eines Django-Projekts unter CentOS
  • So stellen Sie ein Django-Projekt auf CentOS bereit

<<:  LINUX Prüft, ob der Port belegt ist

>>:  MySQL-Abfrage gibt an, dass das Feld keine Zahl und kein Komma SQL ist

Artikel empfehlen

Ideen und Codes zur Implementierung der Vuex-Datenpersistenz

Was ist Vuex vuex: ist ein speziell für vue.js en...

Natives JS zur Realisierung eines einfachen Schlangenspiels

In diesem Artikel wird der spezifische Code von j...

CSS float (float, clear) beliebte Erklärung und Erfahrungsaustausch

Ich bin schon vor langer Zeit mit CSS in Berührun...

Einführung in die Vue3 Composition API

Inhaltsverzeichnis Überblick Beispiel Warum wird ...

So verwenden Sie den Fuser-Befehl im Linux-System

Was ist Fuser Command? Der Befehl fuser ist ein s...

So fügen Sie einem Alpine-Image einen Ansible-Dienst hinzu

Verwenden Sie apk add ansible, um den Ansible-Die...

IE8 bietet eine gute Erfahrung: Aktivitäten

Heute habe ich einen kleinen Vorgeschmack auf IE8...

CSS3 erstellt eine Webanimation, um einen springenden Balleffekt zu erzielen

Grundlegende Vorbereitung Für diese Implementieru...

CSS3 ändert den Bildlaufleistenstil des Browsers

Hinweis: Diese Methode ist nur auf WebKit-basiert...

Detaillierte Erläuterung der langsamen MySQL-Protokollabfrage

Langsame Protokollabfragefunktion Die Hauptfunkti...

So lösen Sie das Phantomleseproblem in MySQL

Inhaltsverzeichnis Vorwort 1. Was ist Phantomlese...

Analyse des Prinzips von Vue nextTick

Inhaltsverzeichnis Ereignisschleife miscroTask (M...