[PYTHON] Ich habe versucht, eine Docker-Datei für die Entwicklungsumgebung von Django zu erstellen

Einführung

Da Dockerfile zuerst gelernt werden musste, um Docker-Compose zu lernen, möchte ich eine Dockerfile mit der Anwendung von Django erstellen, einem Framework von Python.

Vorbereitungen

Als vorläufige Vorbereitung werden das Docker-Image und der Container leer gestartet.

$ docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

$docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS                  NAMES

Erstellen eines Django-Projekts

Dieses Mal werde ich die App verwenden, die mit Django erstellt wurde, das in [diesem Artikel] erstellt wurde (https://qiita.com/sugurutakahashi12345/items/d4377a16c0e42cf48287).

Um nur zu erklären, was Sie beachten müssen, damit Sie den Artikel nicht lesen müssen, wird die App mit dem folgenden Befehl gestartet.

$ python manage.py runserver

Es ist eine einfache App, die die folgende Hello World anzeigt, wenn Sie während der Ausführung der App auf http: // localhost: 8000 / hello zugreifen.

スクリーンショット 2020-08-10 23.08.30.png

Konstruktion

Die Struktur ist wie unten gezeigt.

Es ist auch auf [GitHub] verfügbar (https://github.com/suguruTakahashi-1234/django-sample).

Dockerfile


$ tree
.
├── Dockerfile
├── requirements.txt
├── hello
│ └── (weggelassen)
├── helloWorldProject
│ └── (weggelassen)
├── README.md
├── db.sqlite3
└── manage.py

Dockerfile und require.txt sind die Dateien, die dieses Mal erstellt werden sollten, daher werde ich sie erklären.

Erstellen einer Docker-Datei

Dieses Mal habe ich es wie folgt erstellt.

Dockerfile


# python:3.Stellen Sie das offizielle Bild von 8 als Basisbild ein
FROM python:3.8

#Arbeitsverzeichnis erstellen
RUN mkdir /code

#Arbeitsverzeichniseinstellungen
WORKDIR /code

#Kopieren Sie Assets im aktuellen Verzeichnis in das angegebene Verzeichnis im Container
ADD . /code

#Anforderungen mit pip.Fügen Sie das in txt angegebene Paket hinzu
RUN pip install -r requirements.txt

#Start (Akzeptieren Sie an Port 8002 des Containers)
CMD python3 manage.py runserver 0.0.0.0:8002

Der Inhalt dieser Datei lautet wie folgt.

--Erstellen Sie ein Arbeitsverzeichnis (/ code) basierend auf dem offiziellen Bild von Python: 3.8 --Übertragen Sie alle aktuellen Quellen in diesen Container

Ich werde nicht erklären, wie man eine Docker-Datei schreibt.

Der Unterschied zwischen "RUN" und "CMD" war in [diesem Artikel] leicht zu verstehen (https://qiita.com/YusukeHigaki/items/044164837daa5e845d50). (Einfach ausgedrückt ist RUN ein Befehl, der während des Builds ausgeführt wird, und CMD ist ein Befehl, der ausgeführt wird, wenn der Container gestartet wird.)

Anforderungs.txt erstellen

Module, die mit dem Befehl pip installiert wurden, wie in der Docker-Datei beschrieben, werden jetzt in require.txt beschrieben.

Dieses Mal brauchen wir Django, also werden wir das schreiben.

requirements.txt


Django==3.1

Wenn es diesmal nur ein Modul gibt, muss es nicht zu einer externen Datei gemacht werden. Wenn jedoch mehrere Module installiert werden müssen, ist es einfacher zu verwalten, wenn es so beschrieben wird.

Erstellen eines Bildes aus einer Docker-Datei

Nach dem Vorbereiten der Docker-Datei wird das Image erstellt, indem der Befehl docker build -t [zu erstellender Image-Name] [relativer Pfad zur Docker-Datei] ausgeführt wird.

Dieses Mal werden wir ein Bild namens "Hallo Welt" erstellen.

$ docker build -t hello-world .
(Kürzung)
Successfully tagged hello-world:latest

$ docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
hello-world         latest              6e2fc6616ab1        About a minute ago   922MB
python              3.8                 6feb119dd186        5 days ago           882MB

Sie können sehen, dass das Bild "Hallo Welt" so erstellt wurde. Übrigens wird auch das Bild von python: 3.8 gezogen und angezeigt.

Wenn Sie sich das Element "GRÖSSE" ansehen, ist "Hallo Welt" größer als "Python", sodass Sie sehen können, dass verschiedene Ergänzungen zum Originalbild vorgenommen wurden.

Container starten

Nachdem wir das Bild erstellt haben, starten wir den Container.

$ docker container run -d -p 8001:8002 hello-world
$ docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
ff92b40204f3        hello-world         "/bin/sh -c 'python3…"   About an hour ago   Up About an hour    0.0.0.0:8001->8002/tcp   funny_antonelli

Die zusätzlichen Informationen zu den Optionen des Befehls "Ausführen" lauten wie folgt.

---d: Beginnen Sie im Hintergrund ---p: Legen Sie den Anschluss des Containers frei

Da wir diesmal "8001: 8002" angegeben haben, bedeutet dies, dass der "Port 8001 des Hosts" und der "Port 8002 des Containers" miteinander verbunden sind.

(Ursprünglich werden die Ports 8001 und 8002 nicht verwendet, aber wir verwenden unterschiedliche Nummern, um die Portnummern des Hosts und Containers zu kennen.)

Wenn Sie "http: // localhost: 8001 / hello" besuchen, sollten Sie Folgendes sehen: スクリーンショット 2020-08-11 2.13.29.png

verdienen

Durch Schreiben einer Dockerfile-Datei

"Jedes Mal, wenn Sie dieses Docker-Image abrufen und dann den Docker-Container-Ausführungsbefehl ausführen, müssen Sie sich bei diesem Container anmelden und diesen Befehl und diesen Befehl ~ (weggelassen) ausführen."

Verfahren wie

"Führen Sie den Docker build -t [Bildname] aus. Befehl in dem Verzeichnis, in dem sich die Docker-Datei befindet. 』\

Sie benötigen nur eine Zeile von.

In diesem Fall muss beispielsweise alles unter "FROM python: 3.8" in der Docker-Datei im Verfahrenshandbuch angezeigt werden.

Zusammenfassung

--Erstellte eine Docker-Datei --Erstellt ein Bild aus einer Docker-Datei --Startete den Container aus dem erstellten Image und bestätigte das Verhalten

Recommended Posts

Ich habe versucht, eine Docker-Datei für die Entwicklungsumgebung von Django zu erstellen
Erstellen einer Python-Entwicklungsumgebung für die KI-Entwicklung
Erstellen einer Entwicklungsumgebung für maschinelles Lernen
Ich habe eine Entwicklungsumgebung für Django 3.0 mit Docker, Docker-Compose und Poetry erstellt
Erstellen Sie eine Kubernetes-Umgebung für die Entwicklung unter Ubuntu
Erstellen Sie eine mruby-Entwicklungsumgebung für ESP32 (Linux Edition)
Ich möchte eine schöne Python-Entwicklungsumgebung für meinen neuen Mac erstellen
Richten Sie eine Entwicklungsumgebung für die Verarbeitung natürlicher Sprache ein
Ich möchte einfach eine modellbasierte Entwicklungsumgebung erstellen
So erstellen Sie eine Entwicklungsumgebung für TensorFlow (1.0.0) (Mac)
[Zum Organisieren] Python-Entwicklungsumgebung
[Memo] Erstellen Sie mit Docker eine Entwicklungsumgebung für Django + Nuxt.js
Dockerfile zum Erstellen einer datenwissenschaftlichen Umgebung basierend auf pip3
Ich möchte vorerst eine Docker-Datei erstellen.
Ich berührte PyAutoIt für einen Moment
Schritt für Schritt zum Erstellen einer Docker-Datei
[Für Anfänger] Django -Entwicklungsumgebung Bau-
Optionen für die Python-Entwicklungsumgebung für Mai 2020
Emacs-Einstellungen für die Python-Entwicklungsumgebung
Errichtete eine Umgebung für Anaconda & Jupyter
Erstellen Sie die Entwicklungsumgebung von Django mit Docker neu! !! !! !!
Erstellen Sie mit dem Serverless Framework eine lokale Entwicklungsumgebung für Lambda + Python
[Python] Ich habe ein Follow-Korrelationsdiagramm für Twitter erstellt (Gremlin-Ausgabe)
[DynamoDB] [Docker] Erstellen Sie mit Docker-Compose eine Entwicklungsumgebung für DynamoDB und Django
Ich habe ein Dash-Docset für Holoviews erstellt
Ich habe eine generische Python-Projektvorlage erstellt
Python-Entwicklungsumgebung für macOS mit venv 2016
Erstellen Sie mit Laragon ganz einfach eine Entwicklungsumgebung
Erstellen wir eine virtuelle Umgebung für Python
Ich habe mit Docker eine Anaconda-Umgebung erstellt!
Ich möchte eine Python-Umgebung erstellen
[Mac] Erstellen einer virtuellen Umgebung für Python
Ich habe mit DASH eine Visualisierungssite für das BIP (gesamte Inlandsproduktion) erstellt!
Ich habe versucht, Kivy in einer Mac-Umgebung zu installieren
Bereiten Sie die Entwicklungsumgebung für keyhac für Mac vor
Erstellen einer Conda-Umgebung für ROS-Benutzer
Bau einer Entwicklungsumgebung für die Choreonoid-Werkstatt
Ich habe eine TensorFlow-Umgebung mit Windows 10 erstellt
Ich habe versucht, eine Mac Python-Entwicklungsumgebung mit pythonz + direnv zu erstellen
Startete Node.js in einer virtuellen Umgebung
Ich habe ein Passwort-Tool in Python erstellt.
Ich habe eine Bibliothek für versicherungsmathematische Versicherungen erstellt
Flucht aus Pythons virtueller Umgebung ~ Eine Geschichte über das Fangen in einer von mir erstellten virtuellen Umgebung ~
Erstellen Sie eine lokale Entwicklungsumgebung mit WSL + Docker Desktop für Windows + Docker-Lambda + Python
Erstellen Sie eine Entwicklungsumgebung für die C-Sprache mit einem Container
Ich habe eine Python-Wörterbuchdatei für Neocomplete erstellt
Erstellt einen Python-Wrapper für die Qiita-API
Ich habe einen Ersatz2-Algorithmus für uWSGI billiger gemacht
Ich habe ein nützliches Tool für Digital Ocean erstellt
Bereiten Sie eine Programmiersprachenumgebung für die Datenanalyse vor
Erstellt ein Bibliotheksverwaltungstool nur für Header für C / C ++
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
Ich habe einen Downloader für wortverteilte Ausdrücke erstellt
Erstellen Sie eine Python-Entwicklungsumgebung auf Ihrem Mac
[Python] Webentwicklungsvorbereitung (Erstellen einer virtuellen Umgebung)
Erstellen Sie mit der Doker Toolbox eine Django-Entwicklungsumgebung
Befehle zum Erstellen einer Python3-Umgebung mit virtualenv