[PYTHON] Betrachten Sie die Beschreibung von Dockerfile (Django + MySQL②)

Über diesen Artikel

Dieser Artikel ist ** Teil 2 ** der Artikel zu "Erfahren Sie, wie Sie Docker durch Erstellen der Umgebung von Django + MySQL verwenden".

  1. Erstellen einer virtuellen Python-Umgebung mit venv
  2. ** Beachten Sie die Beschreibung von Dockerfile (dieser Artikel) **
  3. Beachten Sie die Beschreibung von docker-compose.yml
  4. Bearbeiten Sie die Konfigurationsdatei und führen Sie Docker-Compose up aus
  5. Passen Sie den Zeitpunkt des Container-Starts zwischen abhängigen Diensten an

Einführung

In diesem Artikel werden wir überlegen, eine Docker-Datei zu schreiben, um ein Docker-Image für Django zu erstellen.

Für ** Docker-Image ** ist es wie (nur als "Image in meinem Kopf") ** ein kleiner dedizierter Computer zum Ausführen von Projekten, der auf einem vom Host-Computer unabhängigen Betriebssystem ausgeführt wird ** Ich fange es.

Entwerfen Sie das offiziell vorbereitete Python-Bild für das Django-Projekt anhand der Beschreibung in der Docker-Datei. Die Beschreibung selbst entspricht fast der Beschreibung im offiziellen Dokument. Hier werden wir die Bedeutung der Beschreibung berücksichtigen, damit wir sie in Zukunft nach Bedarf entwerfen und anpassen können.

Außerdem gehen wir davon aus, dass die Installation von Docker usw. bereits abgeschlossen ist.

** Dockerfile wird direkt im Verzeichnis des erstellten Projekts [Letztes Mal] erstellt (https://qiita.com/toffe_hy/items/8c62f2bc7b14f1ce2ae0). ** ** **

Beschreibung

Zunächst lautet die Beschreibung der gesamten Datei wie folgt.

Dockerfile


FROM python:3.7
ENV PYTHONUNBUFFERED 1

RUN mkdir /code
WORKDIR /code

COPY requirements.txt /code/
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

COPY . /code/

EXPOSE 8000

Denken Sie über die Bedeutung der Beschreibung nach

Von oben nach unten,

FROM python3.7

Geben Sie in der ersten Zeile ** an, welches Bild aus den bereits erstellten Bildern verwendet werden soll **. Python3.7 wird hier gemäß der in Vorheriger Artikel erstellten virtuellen Umgebung angegeben.

ENV PYTHONUNBUFFERED 1

In der zweiten Zeile gibt ** ENV die Umgebungsvariable ** an. Dies bedeutet, dass der Wert der Umgebungsvariablen "PYTHONUNBUFFERED" auf "1" gesetzt ist. Deaktivieren Sie die Python-Pufferung für Standard-E / A.

RUN mkdir /code

In der 4. Zeile können Sie mit "RUN" ** den Befehl angeben, der zur Erstellungszeit ausgeführt werden soll **. Hier erstellen wir ein "Code" -Verzeichnis.

WORKDIR /code

Geben Sie in der 5. Zeile ** das Arbeitsverzeichnis ** an. Es gibt an, aus welchem Verzeichnis die nachfolgenden "RUN" und "CMD" ausgeführt werden.

COPY requirements.txt /code/

In der 7. Zeile mit einer Lücke Letztes Mal Kopieren Sie die erstellte ** require.txt in das code-Verzeichnis **. Sie können dasselbe mit ADD tun, aber es scheint, dass ** COPY` aufgrund seiner Vielseitigkeit zum Kopieren von reinen Dateien ** empfohlen wird. (Siehe offizielles Dokument](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#add-or-copy)

RUN pip install --upgrade pip

Aktualisieren Sie in Zeile 8 den pip selbst.

RUN pip install -r requirements.txt

Installieren Sie in der 9. Zeile die Pakete, die in der zuvor kopierten require.txt beschrieben sind.

COPY . /code/

In Zeile 11 werden alle ** alle Verzeichnisse / Dateien ** unter dem ** Stammverzeichnis des Host-PC (Mac) ** (der Hierarchie, in der sich die Docker-Datei befindet) in den ** Container kopiert, der später generiert wird. ** Wird sein.

EXPOSE 8000

Schließlich ** deklarieren Sie die zu verwendende Portnummer **. ** Konventionell ist es oft die Standardnummer, die in Bibliotheken / Frameworks verwendet wird **, daher geben wir hier den Standardwert "8000" in "Django" an. (Ich habe auch versucht, eine andere Nummer zu deklarieren, aber es schien gut zu funktionieren, wenn es mit den Befehlszeilenargumenten beim Ausführen des Servers und der Beschreibung in docker-compose.yml übereinstimmte, die ich später erstellt habe.)

Aktuelle Verzeichnisstruktur

django_starter
    ├── config
    │     ├── __init__.py
    │     ├── asgi.py
    │     ├── settings.py
    │     ├── urls.py
    │     └── wsgi.py
    ├── Dockerfile        <- New!
    ├── manage.py
    ├── .venv
    │   └── (Abkürzung)
    └── requirements.txt

Am Ende

Damit ist die Beschreibung von "Dockerfile" zur Schaffung der Umgebung von "Django" eine Pause.

Als nächstes überlegen wir uns die Beschreibung von "docker-compose.yml" basierend auf der diesmal erstellten "Docker-Datei". Klicken Sie hier für den nächsten Artikel ↓ "3. Betrachten Sie die Beschreibung von docker-compose.yml"

Danke für Ihren Besuch.

Recommended Posts

Betrachten Sie die Beschreibung von Dockerfile (Django + MySQL②)
Betrachten Sie die Beschreibung von docker-compose.yml (Django + MySQL ③)
Ich habe den asynchronen Server von Django 3.0 ausprobiert
Verstehen Sie den Komfort des Django Rest Framework
Skript zum Ändern der Beschreibung von Fasta
So überprüfen Sie die Version von Django
Bedeutung von {Versionsnummer} im MySQL-RPM-Paket
Ich habe versucht, die Einstellungen für verschiedene Datenbanken von Django (MySQL, PostgreSQL) zusammenzufassen.
Exklusive Veröffentlichung der Django App mit ngrok
Ich habe die Sitzungsaufbewahrungsdauer von Django überprüft
Erwägen Sie, die Genauigkeit der Erkennung von VAE-Anomalien zu verbessern
Die Geschichte der Anzeige von Mediendateien in Django
Django + MySQL-Einstellungen
Allgemeine Beschreibung des CPUFreq-Kerns und der CPUFreq-Benachrichtigungen
Die Wand beim Ändern des Django-Dienstes von Python 2.7 auf Python 3-Serie
[Django] Ändern Sie die Standard-IP-Adresse des Befehls runserver
[Django 2.2] Sortieren und erhalten Sie den Wert des Beziehungsziels
[Python] Lassen Sie uns die URL der Django-Administrator-Site ändern
Der Beginn von cif2cell
Die Bedeutung des Selbst
Eindrücke, Django zu berühren
der Zen von Python
Die Geschichte von sys.path.append ()
[Django] Benennen Sie das Projekt um
Verwenden Sie MySQL mit Django
Rache der Typen: Rache der Typen
Bearbeiten Sie die Einstellungsdatei und führen Sie Docker-Compose Up aus (Django + MySQL ④).
DJango Hinweis: Von Anfang an (Vereinfachung und Aufteilung von URLConf)
Ich habe an der Übersetzungsaktivität des offiziellen Django-Dokuments teilgenommen
Django gibt den Inhalt der Datei als HTTP-Antwort zurück
Wartung der Django + MongoDB-Entwicklungsumgebung (mitten im Schreiben)
Die Geschichte des Django-Modellfeldes verschwindet aus der Klasse
Zusammenfassung der Stolperpunkte in Django zum ersten Mal
Bis zum Start des Django-Tutorials mit Pycharm unter Windows
[Django] Memo zum Erstellen einer Umgebung von Django + MySQL + Vue.js [Python]