[PYTHON] Bearbeiten Sie die Einstellungsdatei und führen Sie Docker-Compose Up aus (Django + MySQL ④).

Über diesen Artikel

Dieser Artikel ist ** Teil 4 ** von Artikeln im Zusammenhang mit ** Erfahren Sie, wie Sie Docker mithilfe der Django + MySQL-Umgebungskonstruktion verwenden ** Es entspricht.

  1. Erstellen einer virtuellen Python-Umgebung mit venv
  2. Beachten Sie die Beschreibung von Dockerfile
  3. Beachten Sie die Beschreibung von docker-compose.yml
  4. ** Bearbeiten Sie die Einstellungsdatei und führen Sie Docker-Compose Up aus (dieser Artikel) **
  5. Startzeitpunkt des Containers zwischen abhängigen Diensten anpassen

Einführung

In diesem Artikel werden wir das Django-Projekt initialisieren und versuchen, den Entwicklungsserver mit der zuvor erstellten Datei "docker-compose.yml" auszuführen.

Django initialisieren

Erstellen einer lokalen Konfigurationsdatei

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.

Konfigurationsdatei bearbeiten

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.

Führen Sie den Server aus

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.

Informationen zur Funktionsprüfung

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 / `**.

Verzeichnisaufbau

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

Verschiedene Befehle

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

Am Ende

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

Bearbeiten Sie die Einstellungsdatei und führen Sie Docker-Compose Up aus (Django + MySQL ④).
Erstellen Sie benutzerdefinierte Django-Befehle und führen Sie sie über die Befehlszeile aus
Führen Sie Pylint aus und lesen Sie die Ergebnisse
Betrachten Sie die Beschreibung von Dockerfile (Django + MySQL②)
Erstellen Sie die Embulk-Konfiguration und führen Sie sie in Jupyter aus
Unterschied zwischen Docker-Compose-Datei env_file und .env-Datei
Suchen Sie es in der Warteschlange und bearbeiten Sie es
Bearbeiten Sie HTML und CSS der Django-Verschiebungstabelle
Betrachten Sie die Beschreibung von docker-compose.yml (Django + MySQL ③)
Testen Sie das Hochladen von Bildern, indem Sie in Python erstellen, ohne Dummy-Bilddateien in Django zu platzieren
Python-Memorandum: Lesen Sie den Text und bearbeiten Sie den Dateinamen, während Sie die Zieldatei kopieren