[PYTHON] Stellen Sie die Django-Anwendung mit Docker bereit

** Docker ** ist eine Technologie, mit der Anwendungen mithilfe von Containern einfach erstellt, bereitgestellt und ausgeführt werden können.

Was ist Docker?

Docker ist eine Technologie, mit der Anwendungen mithilfe von Containern einfach erstellt, bereitgestellt und ausgeführt werden können. Mit Containern können Entwickler alle Komponenten verpacken, die sie für ihre Anwendung benötigen, und sie später als Pakete versenden. Außerdem können Sie mehr Anwendungen auf demselben Server ausführen.

Mit Docker sind Anwendungen, die auf Containern ausgeführt werden, voneinander isoliert, was ein höheres Maß an Sicherheit bietet. Darüber hinaus garantiert Docker, dass jeder Container über seine eigenen Ressourcen verfügt, sodass die Anwendung nur die zugewiesenen Ressourcen verwendet.

Voraussetzungen

Bevor Sie mit diesem Handbuch beginnen, benötigen Sie Folgendes:

Installieren Sie Docker

Melden Sie sich mit dem Befehl ssh beim Server an.

$ ssh [email protected]

Aktualisieren Sie das Ubuntu-Paket.

$ sudo apt-get update

Installieren Sie die neueste Version von Docker mit dem folgenden Befehl.

$ sudo apt-get install docker

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob Docker korrekt installiert ist:

$ sudo docker run hello-world

Bei korrekter Ausführung sollte der obige Befehl es der Instanz ermöglichen, das Testabbild herunterzuladen und im Container auszuführen.

Container und Bilder in Docker

Mit der Alibaba Cloud ECS-Instanz (https://www.alibabacloud.com/de/product/ecs) können Sie mithilfe von Bildern ECS-Cluster mit derselben Konfiguration erstellen. Ebenso hat der Docker-Container ein Bild. Konzeptionell sind sich die beiden sehr ähnlich. Basierend auf der offiziellen Dokumentation von Docker.

Ein Container-Image ist ein leichtes, eigenständiges, ausführbares Softwarepaket, das alles enthält, was Sie zum Ausführen benötigen: Code, Laufzeit, Systemtools, Systembibliotheken, Einstellungen.

Sie können den laufenden Container sehen, indem Sie $ sudo docker ps ausführen.

Ein Bild hingegen ist eine inaktive, unveränderliche Datei, z. B. eine Momentaufnahme eines Containers. Das Image wird mit dem Befehl build erstellt und beim Starten mit dem Befehl run wird ein Container erstellt.

Bilder können durch Ausführen von "$ sudo docker images" angezeigt werden.

Erstellen Sie eine Django-Anwendung

Zuerst installieren wir Django und erstellen eine Django-Anwendung.

$ sudo pip install django==1.9
$ django-admin startproject djangoapp

Anforderungsdatei

Erstellen Sie eine Anforderungsdatei im Verzeichnis djangoapp, um die Abhängigkeiten zu definieren, die Ihre Anwendung benötigt.

$ cd djangoapp
$ nano requirements.txt

Fügen Sie die folgende Abhängigkeit hinzu.

#requirements.txt

Django==1.9
gunicorn==19.6.0

Erstellen einer Docker-Datei

Docker kann Anweisungen aus einer Docker-Datei lesen und automatisch ein Image erstellen. Die Docker-Datei enthält alle Befehle und Anweisungen, mit denen Docker das Image erstellt.

Definieren wir einige grundlegende Befehle, die in der Docker-Datei verwendet werden.

--FROM - Initialisiert eine neue Erstellungsphase und legt das Basis-Image für nachfolgende Anweisungen fest. Daher muss eine gültige Docker-Datei mit einer FROM-Anweisung beginnen. --RUN - Führt den angegebenen Befehl aus. --ADD --Kopiert die Datei in den Container. --EXPOSE - Benachrichtigt Docker, dass der Container zur Laufzeit den angegebenen Netzwerkport überwacht. --CMD - Bietet Standardeinstellungen für die Ausführung von Containern. Jetzt erstellen wir eine Datei namens Dockerfile.

$ nano Dockerfile

Definieren wir zunächst alle erforderlichen Eigenschaften in der Docker-Datei. Definiert das Basis-Image und den Namen des Betreuers.

# base image 
FROM python:2.7

# File Author / Maintainer
MAINTAINER Esther

Kopieren Sie als Nächstes den Anwendungsordner in den Container und definieren Sie das Verzeichnis, in dem CMD ausgeführt wird.

# Copy the application folder inside the container
ADD . /usr/src/app

# set the default directory where CMD will execute
WORKDIR /usr/src/app

Legen Sie abschließend den Standardbefehl fest und führen Sie ihn aus.

CMD exec gunicorn djangoapp.wsgi:application --bind 0.0.0.0:8000 --workers 3

Die endgültige Docker-Datei sollte folgendermaßen aussehen:

# set the base image 
FROM python:2.7

# File Author / Maintainer
MAINTAINER Esther

#add project files to the usr/src/app folder
ADD . /usr/src/app

#set directoty where CMD will execute 
WORKDIR /usr/src/app

COPY requirements.txt ./

# Get pip to download and install requirements:
RUN pip install --no-cache-dir -r requirements.txt

# Expose ports
EXPOSE 8000

# default command to execute    
CMD exec gunicorn djangoapp.wsgi:application --bind 0.0.0.0:8000 --workers 3 

Erstellen Sie ein Docker-Image

Führen Sie den folgenden Befehl aus, um das Docker-Image zu erstellen.

$ sudo docker build -t django_application_image .

Sending build context to Docker daemon   12.8kB
Step 1/7 : FROM python:2.7
 ---> 2863c80c418c
Step 2/7 : ADD . /usr/src/app
 ---> 09b03ff8466e
Step 3/7 : WORKDIR /usr/src/app
Removing intermediate container a71a3bf6af90
 ---> 3186c92adc85
Step 4/7 : COPY requirements.txt ./
 ---> 701c0be5e039
Step 5/7 : RUN pip install --no-cache-dir -r requirements.txt
 ---> Running in ed034f98db74
Collecting Django==1.9 (from -r requirements.txt (line 1))
  Downloading Django-1.9-py2.py3-none-any.whl (6.6MB)
Collecting gunicorn==19.6.0 (from -r requirements.txt (line 2))
  Downloading gunicorn-19.6.0-py2.py3-none-any.whl (114kB)
Installing collected packages: Django, gunicorn
Successfully installed Django-1.9 gunicorn-19.6.0
Removing intermediate container ed034f98db74
 ---> 1ffd08204a07
Step 6/7 : EXPOSE 8000
 ---> Running in 987b48e1a4ef
Removing intermediate container 987b48e1a4ef
 ---> ef889d6e8fcb
Step 7/7 : CMD exec gunicorn djangoapp.wsgi:application --bind 0.0.0.0:8000 --workers 3
 ---> Running in 4d929e361d0f
Removing intermediate container 4d929e361d0f
 ---> c6baca437c64
Successfully built c6baca437c64
Successfully tagged django_application_image:latest

Das erstellte Image befindet sich in der lokalen Docker-Image-Registrierung des Computers. Um die Bilder anzuzeigen, führen Sie "$ sudo docker images" aus.

REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
django_application_image   latest              c6baca437c64        34 minutes ago      702MB

Führen Sie die App aus

$ sudo docker run -p 8000:8000 -i -t django_application_image

[2018-03-25 12:29:08 +0000] [1] [INFO] Starting gunicorn 19.6.0
[2018-03-25 12:29:08 +0000] [1] [INFO] Listening at: http://0.0.0.0:8000
[2018-03-25 12:29:08 +0000] [1] [INFO] Using worker: sync
[2018-03-25 12:29:08 +0000] [8] [INFO] Booting worker with pid: 8
[2018-03-25 12:29:08 +0000] [9] [INFO] Booting worker with pid: 9
[2018-03-25 12:29:08 +0000] [10] [INFO] Booting worker with pid: 10

Unter http://0.0.0.0:8000 wird eine Meldung angezeigt, dass ** gunicorn ** die App wartet. Sie sollten zur IP-Adresse Ihres Servers (IP-Adresse: 8000) weitergeleitet werden und die Django-Begrüßungsseite sehen.

Um einen laufenden Container zu sehen

$ sudo docker ps -a
CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS                           PORTS                            NAMES
100695b41a0a        django_application_image   "/bin/sh -c 'exec gu…"   13 seconds ago      Exited (0) 4 seconds ago                                          hopeful_easley

Fazit

Bei der Verwendung von Docker treten manchmal Probleme auf. Wenn ein Fehler auftritt, müssen Sie zunächst die Docker-Protokolldatei überprüfen.

Docker und andere Container sind leistungsstarke Alternativen zu herkömmlichen virtuellen Maschinen für die Anwendungsentwicklung. Weitere Informationen zum Ausführen von Containern in der Alibaba Cloud finden Sie auf der Seite Container Services (https://www.alibabacloud.com/de/product/container-service).

Recommended Posts

Stellen Sie die Django-Anwendung mit Docker bereit
Erstellen Sie eine Webanwendung mit Django
Ein Memo zum Erstellen einer Django (Python) -Anwendung mit Docker
Stellen Sie die Django-Anwendung auf EC2 mit Nginx + Gunicorn + Supervisor bereit
Führen Sie eine Python-Webanwendung mit Docker aus
Ich habe eine WEB-Bewerbung bei Django gemacht
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
Erstellen Sie mit Django eine Hallo-Welt-Anwendung mit nur einer Datei
Stellen Sie Django serverlos mit Lambda bereit
Erstellen Sie eine Homepage mit Django
Erstellen Sie eine Webanwendung mit Django
Erstellen Sie eine Rails-Anwendung mit Docker
So stellen Sie eine Django-Anwendung in der Alibaba-Cloud bereit
Stellen Sie die Django-Anwendung in Google App Engine (Python3) bereit.
Starten Sie mit Docker eine Python-Webanwendung auf Nginx + Gunicorn
Stellen Sie eine vorhandene App mit Docker + Pyenv-Virtualenv + Uwsgi + Django bereit
Stellen Sie die mit PTVS erstellte Django-App in Azure bereit
Starten Sie Django auf einem Docker-Container mit Docker-Compose Up
Erstellen Sie eine Entwicklungsumgebung mit Poetry Django Docker Pycharm
Erstellen Sie mit Docker eine Django-Entwicklungsumgebung! (Docker-compose / Django / postgreSQL / nginx)
Messen Sie die Abdeckung der Django-Anwendung mit Coverage.py
[Memo] Erstellen Sie mit Docker eine Entwicklungsumgebung für Django + Nuxt.js
Erstellen eines Flask-Servers mit Docker
Erstellen Sie eine Deb-Datei mit Docker
Stellen Sie die Django-Anwendung auf Heroku bereit
Django-Tipps - Erstellen Sie eine Ranking-Site mit Django-
Twitter-Posting-Anwendung mit Django gemacht
[Django] Erstellen Sie mit PyCharm schnell eine Entwicklungsumgebung für Django-Container (Docker)
Führen Sie python3 Django1.9 mit mod_wsgi aus (deploy)
Django + Docker
Machen Sie einen Filter mit einer Django-Vorlage
Erstellen einer Todo-App mit Django ① Erstellen Sie eine Umgebung mit Docker
Anwendungsentwicklung mit Docker + Python + Flask
Erstellen Sie mit Django einen Datei-Uploader
Serie, in der Amateur-Infrastrukturingenieure Django mit Docker berühren touch: Django admin
Ich habe eine Entwicklungsumgebung für Django 3.0 mit Docker, Docker-Compose und Poetry erstellt
Startete eine Webanwendung auf AWS mit Django und wechselte Jobs
[DynamoDB] [Docker] Erstellen Sie mit Docker-Compose eine Entwicklungsumgebung für DynamoDB und Django
Einfacher RSS-Reader mit Django
Holen Sie sich mit Docker eine lokale Umgebung für DynamoDB
Lassen Sie uns mit Docker eine dynamische Site kratzen
Erstellen eines Anmeldebildschirms in Django all auth
[Python] Eine schnelle Webanwendung mit Bottle!
App-Entwicklung mit SQLite mit Django (PTVS)
[Linux] Erstellen einer Jenkins-Umgebung mit Docker
Hinweise zum Aktivieren von PostgreSQL mit Django
Erstellen Sie einen Webdienst mit Docker + Flask
Starten Sie die Flask-Anwendung mit Docker auf Heroku
[Linux] Aufbau einer Docker-Umgebung mit Amazon Linux 2
Django Heroku Deploy 1
Internationalisierung mit Django
Eine Reihe von Amateur-Infrastrukturingenieuren, die Django mit Docker berühren (2): Erstellen eines Modells
Django Heroku Deploy 2
CRUD mit Django
Django + Docker-Befehl
Bis die mit Flasche erstellte Webanwendung auf Heroku veröffentlicht (bereitgestellt) wird
Ich habe eine GUI-App mit Python + PyQt5 erstellt
Starten Sie Django in einer virtuellen Umgebung mit Pipenv
Starten Sie mit Docker einen einfachen Python-Webserver