Dieser Artikel ist ** Teil 4 ** von Artikeln im Zusammenhang mit ** Erfahren Sie, wie Sie Docker mithilfe der Django + MySQL-Umgebungskonstruktion verwenden ** Es entspricht.
In diesem Artikel werden wir das Django-Projekt initialisieren und versuchen, den Entwicklungsserver mit der zuvor erstellten Datei "docker-compose.yml" auszuführen.
Erstellen Sie vor dem Bearbeiten von "settings.py" "local_settings.py" im selben Verzeichnis wie "settings.py". Wenn Sie auf "GitHub" usw. veröffentlichen möchten, entfernen Sie diese Datei aus dem Verwaltungsziel.
config/local_settings.py
SECRET_KEY_LS = '**************************************************'
DB_NAME = "************"
DB_USER = "************"
DB_PASSWORD = "************"
Der zum Zeitpunkt der Ausführung von $ django-admin startproject generierte "SECRET KEY" von "config / settings.py" wird auf "SECRET_KEY_LS" gesetzt, und die Beschreibung wird hierher verschoben. Beschreiben Sie für "DB_NAME", "DB_USER" und "DB_PASSWORD" den gleichen Inhalt wie für die zuletzt erstellte ".env" -Datei und beim Verbinden von Django mit der DB des MySQL-Containers von "settings.py" wie folgt. Importieren und verwenden.
Bearbeiten Sie settings.py
.
config/settings.py
import os
import from .local_settings import SECRET_KEY_LS, DB_NAME, DB_USER, DB_PASSWORD
# (Unterlassung)
SECRET_KEY = SECRET_KEY_LS
Importieren Sie zuerst die erforderlichen Variablen usw. und ersetzen Sie "SECRET_KEY_" durch "SECRET_KEY_LS".
Fügen Sie dann "127.0.0.1" und "localhost" zur gleichen Datei "ALLOWED_HOSTS" hinzu.
config/settings.py
ALLOWED_HOSTS = ["127.0.0.1", "localhost"]
Der Inhalt von "localhost" ist der gleiche, da der Name durch die Beschreibung in "~ / etc / hosts" im Container in "127.0.0.1" aufgelöst wird. Aus Gründen der Benutzerfreundlichkeit sind beide hier registriert. Ich werde das machen.
Der Anwendungsserver selbst läuft auf "0.0.0.0", wie durch "Befehl" in "docker-compose.yml" angegeben, aber indem die Beschreibung hier auf "localhost" ** von einem anderen als dem Host-Computer beschränkt wird. Sie sollten in der Lage sein, die Verbindung zu spielen **. (Solange ich versuchte, eine Verbindung von einem anderen Terminal in derselben WiFi-Umgebung herzustellen, schienen die Einstellungen wie beabsichtigt zu sein.)
Bearbeiten Sie abschließend die Elemente, die sich auf die DB-Verbindungseinstellungen beziehen. Ich habe bereits früher aus local_settings.py
importiert, was ich brauche, also wende ich einfach jedes einzelne an.
config/settings.py
# Database
DATABASES = {
'default': {
'ENGINE': "django.db.backends.mysql",
'NAME': DB_NAME,
'USER': DB_USER,
"PASSWORD": DB_PASSWORD,
'HOST': "db",
"PORT": "3306"
}
}
Für den Teil "HOST" können Sie den Namen "MySQL-Dienst" ** eingeben, der in "docker-compose.yml" genannt wird. Hier ist er also "db". PORT
wurde wie zuvor mit dem MySQL-Standard 3306
angegeben.
Damit sind die Grundeinstellungen abgeschlossen.
Mit den bisherigen Einstellungen reicht alles vom ** Starten des Images und des Containers bis zum Ausführen des Django-Servers **
$ docker-compose up
Sie sollten dies mit einem einzigen Befehl tun können.
Wenn ich es jedoch tatsächlich ausführe, treten unter bestimmten Bedingungen Probleme auf. Darüber der nächste Artikel "5. Passen Sie den Startzeitpunkt des Containers zwischen abhängigen Diensten an" Bitte beziehen Sie sich auf.
Als Protokoll zum Zeitpunkt der Serverausführung
djst_django | Starting development server at http://0.0.0.0:8000/
djst_django | Quit the server with CONTROL-C.
Aufgrund der Einstellung ist die tatsächliche Funktionsprüfung jedoch nicht das angezeigte "http: //0.0.0.0: 8000 /", sondern "http: //172.0.0.1: 8000 /" oder "http". Dies erfolgt ab: // localhost: 8000 / `**.
django_starter
├── .venv
│ └── (Abkürzung)
├── config
│ ├── __init__.py
│ ├── asgi.py
│ ├── local_settings.py <- New!
│ ├── settings.py
│ ├── urls.py
│ ├── wait_for_db.py <-Siehe einen anderen Artikel
│ └── wsgi.py
├── mysql
│ ├── data <-Automatisch erzeugt
│ │ └── (Abkürzung)
│ └── my.cnf
├── .env
├── docker-compose.yml
├── Dockerfile
├── manage.py
└── requirements.txt
Schreiben Sie zum Schluss Ihre Lieblingsbefehle hier auf.
# $ pwd
# (Abkürzung)/django_starter/
#Django-bezogene Befehle( shell,migrieren etc.)
$ docker-compose run web python manage.py [command]
#Führen Sie den Entwicklungsserver aus
$ docker-compose up
#Paketaktualisierung
(.venv) $ pip install [Paketnamen]
(.venv) $ pip freeze >> requirements.txt
#Betritt den Container
$ docker-compose run --rm web /bin/bash #Mit Bash eintreten
#Oder...
$ docker-compose up -d #Nach dem Laufen im Hintergrund...
$ docker exec -it [Containername] /bin/bash #Mit Bash eintreten
#Behälter stoppen
$ docker-compose down
Damit ist der Zweck dieser Artikelgruppe abgeschlossen: ** Erstellen einer Django + MySQL-Umgebung mit Docker-Compose **. Danach werde ich das Django-Vorlagen-Repository mit den Einstellungen rund um das Front-End nach meinen Wünschen verwalten und verwenden.
Als Eindruck, an dem ich als Anfänger gearbeitet habe, war es eine Gelegenheit, nicht nur Docker, sondern auch Grundlagen rund um das Terminal und das Netzwerk zu lernen **, und ich habe das Gefühl, dass ich durch das Ausprobieren viel gelernt habe. .. Wenn man sich jedoch die Protokolle ansieht, die noch zum Terminal fließen (insbesondere für MySQL), gibt es viele Dinge, die verbessert werden müssen ... Ich möchte weiter lernen und einen Zustand anstreben, in dem ich es in einer Form verwenden kann, die für tatsächliche Schlachten besser geeignet ist, z. B. in einer Produktionsumgebung wie Amazon ECS.
Vielen Dank für Ihren Besuch auf unserer Website.
.
Recommended Posts