VS-Code "Ja. Wenn es sich um" Remote-Entwicklung "handelt."
Ich "Was ... was ..."
VSCode "Da wir mit Docker-Compose debuggen werden, erstellen Sie zuerst die Umgebung, indem Sie auf den leicht verständlichen Artikel unten verweisen."
Ich sagte: "Das ist Miso."
VSCode "Die Ordnerstruktur sollte wie folgt aussehen."
tree
containers
├── django
│ ├── Dockerfile
│ ├── Pipfile
│ ├── Pipfile.lock
│ ├── config
│ │ ├── __init__.py
│ │ ├── asgi.py
│ │ ├── settings.py
│ │ ├── urls.py
│ │ └── wsgi.py
│ ├── db.sqlite3
│ ├── entrypoint.sh
│ ├── manage.py
│ └── static
├── docker-compose.yml
├── nginx
│ ├── Dockerfile
│ └── nginx.conf
└── postgres
├── Dockerfile
└── sql
└── init.sql
VSCode "Hondara, öffne das Containerverzeichnis Wai (VSCode)."
Ich "Aiyo."
Installieren Sie VSCode "Remote Development. Wenn die Installation abgeschlossen ist
VSCode "Fügen Sie als Nächstes Konfigurationsdateien zum Debuggen hinzu."
VS-Code "Klicken Sie auf das blaue Symbol, das angezeigt wird."
Ich "Aiyo."
VSCode "Dann erscheint das Menü oben? Wählen Sie" Remote-Container: Entwicklungscontainer-Konfigurationsdateien hinzufügen ... "aus der Mitte."
VS-Code "Wählen Sie danach" From'docker-compose.yml "."
--Wählen Sie den Dienst aus, den Sie debuggen möchten (diesmal Django).
VSCode "Dann wird das Verzeichnis" .devcontainer "im Stammverzeichnis des Projekts erstellt und" devcontainer.json "und" docker-compose.yml "werden darin erstellt. Schreiben Sie" devcontainer.json "also wie folgt neu!"
VSCode "Wenn Sie diesen Bereich in der Praxis nutzen möchten, ersetzen Sie ihn durch eine beliebige Umgebung!"
Ich bin süchtig nach der Einstellungsdatei, daher bin ich mir nicht sicher. "
devcontainer.json
{
//Geben Sie einen beliebigen Namen ein
"name": "djnago containers",
//Docker zum Erstellen des Containers, für den Sie sich mit Remote anmelden möchten-Bitte geben Sie eine Erstellungsdatei an.
"dockerComposeFile": "docker-compose-debug.yml",
//Wählen Sie den Dienst aus, den Sie starten möchten
"service": "django",
//Das erste, das hier beim Betreten des Containers angegeben wird, ist das aktuelle Verzeichnis
"workspaceFolder": "/usr/src/app/",
//Wählen Sie eine Shell aus
"settings": {
"terminal.integrated.shell.linux": "/bin/bash"
},
//Wählen Sie die vscode-Erweiterung
"extensions": ["ms-azuretools.vscode-docker", "ms-python.python"],
//Legen Sie das Verhalten des Containers fest, wenn vscode geschlossen wird
//Starten Sie den Container mit keiner
"shutdownAction": "none"
}
VSCode "Als nächstes zum Debuggen in yml umschreiben! Ändern Sie die automatisch generierte Datei" docker-compose.yml "im Verzeichnis" .devcontainer "in" docker-compose-debug.yml "und die vorhandene" Kopieren Sie den Inhalt von docker-compose.yml`. "
VSCode "Zu diesem Zeitpunkt gibt es drei Dienste:" django "," postgres "und" nginx ". Da Sie sie jedoch nicht bei jedem Debuggen von nginx aus bereitstellen müssen, ändern Sie sie wie folgt. Bitte ändern Sie es, wie Sie möchten. "
--Korrektur
docker-compose-debug.yml
version: '3.7'
services:
django:
container_name: django
build: ../django
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- ../django:/usr/src/app/
ports:
- 8000:8000
#Port zum Debuggen hinzufügen
- 8888:8888
env_file:
- ../django/.env
depends_on:
- postgres
postgres:
container_name: postgres
build: ../postgres
volumes:
- sample_postgis_data:/var/lib/postgresql/data
- ../postgres/sql:/docker-entrypoint-initdb.d
env_file: ../postgres/.env_db
ports:
- 5433:5432
volumes:
sample_postgis_data:
VSCode "Jetzt sollte es ein Verzeichnis wie dieses sein."
Ich "Seyana".
tree
containers
├── .devcontainer
│ ├── devcontainer.json
│ └── docker-compose-debug.yml
├── django
│ ├── .env
│ ├── Dockerfile
│ ├── Pipfile
│ ├── Pipfile.lock
│ ├── config
│ │ ├── __init__.py
│ │ ├── asgi.py
│ │ ├── settings.py
│ │ ├── urls.py
│ │ └── wsgi.py
│ ├── db.sqlite3
│ ├── entrypoint.sh
│ ├── manage.py
│ └── static
├── docker-compose.yml
├── nginx
│ ├── Dockerfile
│ └── nginx.conf
└── postgres
├── .env_db
├── Dockerfile
└── sql
└── init.sql
VSCode "Ich debugge endlich, aber wenn Sie den Container bereits mit" docker-compose.yml "gestartet haben, stoppen Sie ihn vorübergehend. Ich werde den Container beim Debuggen neu erstellen, aber die ursprüngliche yml-Datei ist dieselbe Weil ich benutze, stehen die Namen in Konflikt und es wird schwierig, gut anzufangen. "
VSCode "Nachdem Sie den Stopp bestätigt haben, drücken Sie das blaue Symbol unten und klicken Sie dann auf" Remote-Container: Ordner in Containern öffnen ... "und auf das Verzeichnis, in dem" .devcontainer "vorhanden ist (in diesem Beispiel" Container "). Bitte auswählen. "
VSCode "Übrigens, wenn der Container bereits gestartet ist, können Sie sich bei dem Container anmelden, der bereits ausgeführt wird, indem Sie" Remote-Container: An laufende Container anhängen ... "auswählen. Die in" devcontainer.json "erstellten Einstellungen werden jedoch wiedergegeben. Bitte beachten Sie, dass die Erweiterung nicht installiert wird. "
I "Dies ist auch ein süchtig machender Punkt. Memo Memo ..."
VSCode "Wenn Sie ein Verzeichnis auswählen, wird ein neues Fenster geöffnet und die folgende Anzeige wird unten rechts auf dem Bildschirm angezeigt. Warten Sie eine Weile, während der Container ausgeführt wird."
Ich sagte: "Es ist ziemlich lang. Lass uns geduldig sein. Ich hasse Ungeduld."
VSCode "Übrigens, wenn Sie in blauen Buchstaben auf" Mit Dev Container starten "klicken, sehen Sie das Protokoll des Prozesses, der zum Starten des Containers erforderlich ist, in Echtzeit. Wenn ein Fehler auftritt, wird er gestoppt, aber Sie können sehen, was mit diesem Protokoll nicht stimmt."
VSCode "Nun, normalerweise ist der Pfad falsch oder der Name steht in Konflikt."
VSCode "Wenn es sicher gestartet wird, wird das Verzeichnis im Container angezeigt, und die Shell öffnet auch das angegebene Verzeichnis als aktuelles Verzeichnis, und Sie können bestätigen, dass es an den gestarteten Container angehängt ist."
VS-Code "Erweiterung installiert."
Ich sagte: "Zunächst müssen Sie die Erweiterung, die Sie installieren möchten, explizit in" devcontainer.json "schreiben ..."
VSCode "Klicken Sie auf das Symbol" Ausführen und Debuggen "und dann auf" Datei "launch.json erstellen" ... "
VSCode "Dann klicken Sie auf" Docker Debug ins Container "..."
VSCode "Der Bearbeitungsbildschirm für" launch.json "wird geöffnet. Bearbeiten Sie ihn also wie folgt und schließen Sie ihn ab!"
launch.json
{
"version": "0.2.0",
"configurations": [
{
//Anzeigename
"name": "django container",
//Sprache
"type": "python",
//Verhalten beim Debuggen. Neben der Ausführung
"request": "launch",
//Pfad zur Datei, um zu arbeiten
"program": "${workspaceFolder}/manage.py",
//Wählen Sie das Terminal aus, das zum Debuggen verwendet werden soll. Sie können ein Terminal auch außerhalb von VS Code starten
"console": "integratedTerminal",
//Argumente bei der Programmausführung
"args": [
"runserver",
"--noreload",
"0.0.0.0:8888"
],
"django": true
}
]
}
VSCode "Wählen Sie den Interpreter unten links auf dem Bildschirm aus, um das Programm am Ende auszuführen (in diesem Beispiel wählen Sie python3.8)."
VSCode "Wenn alle Einstellungen abgeschlossen sind, lauten die Elemente" Ausführen und Debuggen "wie folgt. Wenn Sie auf das grüne Dreiecksymbol wie die Wiedergabetaste klicken, debuggen Sie mit dem angegebenen" 0.0.0.0: 8888 " Der Server wird gestartet. "
VSCode "Wenn Sie nach dem Drücken der Taste über den Browser eine Verbindung zu" localhost: 8888 "herstellen, sollte der übliche Bildschirm angezeigt werden."
Ich "honmaya".
VSCode "Wenn Sie danach an der Stelle, an der Sie debuggen möchten, einen Haltepunkt festlegen und auf die URL zugreifen, unter der die Funktion mit dem Haltepunkt vom Browser usw. ausgeführt wird, können Sie den Inhalt der Anforderung anzeigen und die Variablen in VScode überprüfen. Tu es! "
VSCode "Wenn Sie nach" VSCode Debug "googeln, gibt es viele detaillierte Methoden. Probieren Sie es aus!"
Ich sagte: "VS Code God!
Oshimai