Dieser Artikel zielt darauf ab, eine Entwicklungsumgebung für Django mit Dcoker zu erstellen, ohne Python und Django auf dem lokalen Computer zu installieren. Es gibt zwei Möglichkeiten, eine Umgebung mithilfe eines Containers zu erstellen: Die eine besteht darin, nur Dockerfile zu verwenden, und die andere darin, Docker Compose zu verwenden. Dieser Artikel beschreibt die erstere.
Bitte lesen Sie den folgenden Artikel für letzteres. ⇒ Einfache Erstellung der Docker Compose + Django-Entwicklungsumgebung
Wie der Titel schon sagt, besteht der Zweck der Datenbank darin, den Django-Standard SQLite3 so zu verwenden, wie er ist, weil der Zweck darin besteht, eine Umgebung zu erstellen, die einfach, leicht und sofort funktioniert. Wenn Sie MariaDB oder PostgreSQL verwenden möchten, lesen Sie bitte die offizielle Dcoker-Dokumentation.
Wir gehen davon aus, dass Windows und Mac mit Docker Desktop installiert sind oder Linux mit Docker Engine.
Die Befehle in diesem Artikel werden auf dem Mac-Terminal ausgeführt. Wenn jedoch Docker Desktop installiert ist, können ähnliche Befehle anscheinend an der Windows-Eingabeaufforderung ausgeführt werden.
Es gibt ein offizielles Django-Repository auf Docker Hub, aber dieses ist deprecized, wie oben im TOP angegeben, und es wurde seit über 3 Jahren aufgegeben. https://hub.docker.com/_/django
Ich habe versucht, dieses Docker-Image so zu verwenden, wie es ist, aber ich konnte es nicht einmal für Lernzwecke verwenden, da ich bei der Projekterstellung gestolpert bin. Ich denke, es ist besser, ehrlich als etwas aufzugeben, das es nicht gibt.
Verwenden Sie die Dcoker-Datei, um eine Django-Entwicklungsumgebung mit einem einzelnen Docker-Container zu erstellen.
Erstellen Sie ein beliebiges Arbeitsverzeichnis auf dem lokalen Computer und erstellen Sie eine Datei mit dem Namen "Dockerfile", "require.txt" und ein Verzeichnis mit einem beliebigen Namen (hier src). Masu).
Dockerfile
requirements.txt
src/
Bearbeiten Sie den Inhalt der Docker-Datei wie folgt.
Dockerfile
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
Bearbeiten Sie den Inhalt von require.txt wie folgt.
requirements.txt
django
pyyaml
Um den obigen Inhalt basierend auf dem Python Docker-Image (basierend auf Linux namens Debian) kurz zu erläutern, erstellen Sie zunächst ein Verzeichnis mit dem Namen code direkt unter dem Stammverzeichnis und beschreiben Sie es dann in der Datei require.txt. Der Inhalt besteht darin, das Paket mit dem Befehl pip zu installieren.
Python3 wird nicht mit einem Yaml-Modul geliefert, daher ist es eine gute Idee, auch "pyyaml" zu installieren. Ohne das yaml-Modul kann es zu einem Fehler kommen, wenn dumpdata / loaddata in Django.
Der Verzeichnisname kann ein anderer Name als code sein.
Führen Sie den Befehl "Docker Build" in dem Verzeichnis aus, in dem Dockerfile und require.txt vorhanden sind.
$ docker build -t django_s .
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
django_s latest 0d5d29c3eef9 4 seconds ago 922MB
Die Option -t ist eine Option zum Angeben des Bildnamens und des Tags. Der Bildname ist beliebig und spielt keine Rolle. Hier ist es django_s. Vergessen Sie nicht das letzte "." (Punkt).
Vergewissern Sie sich nach dem Ausführen des Befehls "Docker Build", dass das Image normal mit dem Befehl "Docker Images" erstellt wurde.
Führen Sie den Befehl "Docker ausführen" aus, um den Container aus dem im vorherigen Abschnitt erstellten Docker-Image zu erstellen und zu starten.
$ docker run -itd -p 8000:8000 -v /Users/dev_user/django_test/src:/code --name django_s_test django_s
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1ea546d25f3e django_s "python3" 11 seconds ago Up 10 seconds 0.0.0.0:8000->8000/tcp django_s_test
Die Option -it
ist eine Option, die die Standardeingabe / -ausgabe vermittelt.
Ohne sie endet der Container sofort nach dem Start.
Die Option -d ist eine Hintergrundausführungsoption. Ohne diese Option wird die Eingabeaufforderung während der Befehlsausführung nicht zurückgegeben. Stattdessen wartet sie im interaktiven Python-Modus auf Eingaben.
Die Option -p ist eine Portweiterleitungsoption. Verbinden Sie Port 8000 auf Ihrem lokalen Computer mit Port 8000 auf Ihrem Container.
Die Option -v
ist eine Option zum Mounten des Verzeichnisses auf Ihrem lokalen Computer im Container.
Hier wird das in Abschnitt 1-1 erstellte Verzeichnis src im Verzeichnis _ / code_ des Containers bereitgestellt.
Wenn es auf der Containerseite ein Update in _ / code_ gibt, wird es im Verzeichnis src wiedergegeben, und wenn es auf der Seite des lokalen Computers ein Update in src gibt, wird es im Verzeichnis _ / code_ wiedergegeben.
Schreiben Sie den Verzeichnispfad entsprechend dem Pfad Ihres lokalen Computers neu.
Die Option --name
gibt den Namen des Containers an.
Jeder Name ist in Ordnung. Hier ist es django_s_test.
Verwenden Sie nach dem Ausführen des Befehls "docker run" den Befehl "docker ps", um zu bestätigen, dass der Container normal gestartet wurde und der Prozess ausgeführt wird.
Sie können den laufenden Container auch im Dashboard-Fenster von Docker Desktop überprüfen.
Ab hier sind es hauptsächlich Django-Operationen, nicht Docker.
Wechseln Sie zunächst in das Verzeichnis src und rufen Sie den Befehl django-admin startproject
im Container über den Befehl docker exec
auf, um ein Django-Projekt zu erstellen.
Hier lautet der Projektname django_prj, aber Sie können den Projektnamen natürlich beliebig ändern.
$ cd /Users/dev_user/django_test/src
$ docker exec django_s_test django-admin startproject django_prj .
Mit docker exec [Containername]
können Sie jeden Befehl im Docker-Container ausführen.
Der Befehl django-admin
ist verfügbar, wenn Django installiert ist. Wenn Sie diesen Befehl also nicht finden können, ist es wahrscheinlich, dass docker build
fehlgeschlagen ist.
Stellen Sie in diesem Fall sicher, dass der Teil "pip install -r require.txt" in der Docker-Datei und der Teil "django" in der Datei "resources.txt" richtig geschrieben sind.
Wenn das Django-Projekt erfolgreich erstellt wurde, wird die Projektvorlagendatei im Verzeichnis src erstellt.
db.sqlite3
django_prj/
manage.py
Django verfügt über eine Entwicklungsserverfunktion, mit der Sie den Vorgang unabhängig überprüfen können, ohne einen Webserver wie Apache oder Nginx zu verwenden.
Führen Sie den Befehl python manage.py runserver
im Container über den Befehl docker exec
aus, genau wie beim Erstellen des Projekts.
Zum Unterbrechen drücken Sie control + c
.
$ docker exec django_s_test python manage.py runserver 0.0.0.0:8000
...(Kürzung)...
Django version 3.1, using settings 'django_test.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
Zur Bestätigung gehen Sie in Ihrem Browser zu "http: // localhost: 8000 /".
Wenn Sie die Startseite mit dem Raketenbild sehen, funktioniert das Django-Projekt ordnungsgemäß. Vielen Dank für Ihre harte Arbeit: D┼┤
Lesen Sie anschließend die offizielle Django-Dokumentation und die im Handel erhältlichen Nachschlagewerke. Wenn ein Befehl angegeben wird, fügen Sie vor dem Befehl "docker exec [Containername]" hinzu, um auf Django im Docker-Container zu verweisen. Es werden verschiedene Operationen ausgeführt.
Es gab viele Informationen zum Erstellen einer Entwicklungsumgebung für Django mit Docker, aber es gab keinen Eintrag, in dem erklärt wurde, warum das auf Docker Hub veröffentlichte offizielle Image nicht verwendet wurde und Docker und Docker Compose 2 verwendet wurden In einem Artikel gab es keinen Eintrag, in dem erwähnt wird, dass es eine Möglichkeit gibt, dies zu tun. Deshalb habe ich diesen Artikel für mich selbst erstellt, auf den ich zurückblicken kann.
Der Artikel zum Erstellen einer Entwicklungsumgebung mit Docker Compose lautet wie folgt. ⇒ Einfache Erstellung der Docker Compose + Django-Entwicklungsumgebung