[PYTHON] I "Ein Editor, der Django nicht remote debuggen kann ..." VS Code "Das ist möglich." ~ Docker-compose edition ~

Einführung

VS-Code "Ja. Wenn es sich um" Remote-Entwicklung "handelt."

Ich "Was ... was ..."

Inhaltsverzeichnis

Voraussetzungen

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."

Remote Development Installation

Installieren Sie VSCode "Remote Development. Wenn die Installation abgeschlossen ist

image1.png

Konfigurationsdatei hinzufügen

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."

image2.png

VS-Code "Wählen Sie danach" From'docker-compose.yml "."

image3.png

--Wählen Sie den Dienst aus, den Sie debuggen möchten (diesmal Django). image4.png

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:

Starten Sie das Remote-Debugging

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. "

image5.png

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."

image6.png

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."

image7.png

VS-Code "Erweiterung installiert."

Ich sagte: "Zunächst müssen Sie die Erweiterung, die Sie installieren möchten, explizit in" devcontainer.json "schreiben ..."

image8.png

Starten Sie das Debuggen

VSCode "Klicken Sie auf das Symbol" Ausführen und Debuggen "und dann auf" Datei "launch.json erstellen" ... "

image9.png

VSCode "Dann klicken Sie auf" Docker Debug ins Container "..."

image10.png

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)."

image11.png

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. "

image12.png

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".

image13.png

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

Recommended Posts

I "Ein Editor, der Django nicht remote debuggen kann ..." VS Code "Das ist möglich." ~ Docker-compose edition ~
Debuggen Sie die mit Docker-Compose mit VS-Code erstellte Django-Umgebung aus der Ferne