Node.js in einem Container
In dieser Anleitung lernen Sie, wie Sie
- Erstellen einer
Dockerfile-Datei für einen Express Node.js-Dienst-Container - Erstellen, Ausführen und Überprüfen der Funktionalität des Diensts
- Debuggen des Diensts, der in einem Container ausgeführt wird
Voraussetzungen
- Sowohl Docker als auch die VS Code Container Tools-Erweiterung müssen wie in der Übersicht beschrieben installiert sein
- Node.js Version 10 oder höher
Erstellen einer Express Node.js-Anwendung
-
Erstellen Sie einen Ordner für das Projekt.
-
Öffnen Sie eine Entwicklungskommandozeile im Projektordner und erstellen Sie das Projekt
npx express-generator npm install
Docker-Dateien zum Projekt hinzufügen
-
Öffnen Sie den Projektordner in VS Code.
-
Öffnen Sie die Befehlspalette (⇧⌘P (Windows, Linux Ctrl+Shift+P)) und verwenden Sie den Befehl Containers: Add Docker Files to Workspace...

-
Wählen Sie Node.js aus, wenn Sie nach der Anwendungsplattform gefragt werden.
-
Wählen Sie die Standarddatei package.json.
-
Geben Sie
3000ein, wenn Sie nach dem Anwendungsport gefragt werden. -
Wählen Sie entweder Ja oder Nein, wenn Sie gefragt werden, ob Docker Compose-Dateien eingeschlossen werden sollen. Compose wird typischerweise verwendet, wenn mehrere Container gleichzeitig ausgeführt werden.
Die Erweiterung erstellt Dockerfile- und .dockerignore-Dateien. Wenn Sie Docker Compose-Dateien einschließen, werden auch docker-compose.yml und docker-compose.debug.yml generiert. Schließlich erstellt die Erweiterung einen Satz von **VS Code Tasks** in .vscode/tasks.json zum Erstellen und Ausführen des Containers (sowohl im Debug- als auch im Release-Konfigurationsmodus) und eine **Debug-Konfiguration** in .vscode/launch.json zum Debuggen des Diensts innerhalb des Containers.
Hinzufügen einer Umgebungsvariable zum Image
Die Container Tools-Erweiterung hilft Ihnen beim Erstellen von Dockerfiles, indem sie IntelliSense verwendet, um Auto-Vervollständigungen und kontextbezogene Hilfe bereitzustellen. Um diese Funktion in Aktion zu sehen, fügen Sie Ihrer Dienst-Image eine Umgebungsvariable hinzu, indem Sie die folgenden Schritte ausführen
-
Öffnen Sie die Datei
Dockerfile. -
Verwenden Sie die
ENV-Anweisung, um dem Dienst-Container-Image eine Umgebungsvariable hinzuzufügen.
Beachten Sie, wie die Container Tools-Erweiterung alle verfügbaren Dockerfile-Anweisungen auflistet und die Syntax beschreibt.
Die Container Tools-Erweiterung verwendet die
base-Stufe desDockerfile, um eine Debug-Version des Container-Images für Ihren Dienst zu erstellen. Platzieren Sie die Umgebungsvariablen-Definition in derbase-Stufe, damit diese Variable sowohl in der Debug- als auch in der Release-Version des Container-Images verfügbar ist. -
Speichern Sie die Datei
Dockerfile.
Lokales Ausführen des Diensts
-
Öffnen Sie ein Terminal (⌃` (Windows, Linux Ctrl+`)).
-
Geben Sie
npm run startein, um die Anwendung zu starten> express-app@0.0.0 start /Users/user/code/scratch/express-app > node ./bin/www -
Öffnen Sie den Webbrowser und navigieren Sie zu https://:3000. Sie sollten eine Seite sehen, die der folgenden ähnelt

-
Wenn Sie mit dem Testen fertig sind, geben Sie Ctrl+C im Terminal ein.
Erstellen des Dienst-Images
-
Öffnen Sie die Befehlspalette (⇧⌘P (Windows, Linux Ctrl+Shift+P)) und wählen Sie den Befehl Container Images: Build Image... aus.
-
Öffnen Sie den Container Explorer und vergewissern Sie sich, dass das neue Image in der Ansicht "Images" sichtbar ist

Ausführen des Dienst-Containers
-
Klicken Sie mit der rechten Maustaste auf das im vorherigen Abschnitt erstellte Image und wählen Sie Run oder Run Interactive. Der Container sollte gestartet werden und Sie sollten ihn in der Container-Ansicht sehen können

-
Öffnen Sie den Webbrowser und navigieren Sie zu https://:3000. Sie sollten eine Seite sehen, die der folgenden ähnelt

-
Wenn Sie mit dem Testen fertig sind, klicken Sie mit der rechten Maustaste auf den Container in der Container-Ansicht und wählen Sie Stop.
Debuggen im Dienst-Container
Wenn die Container Tools-Erweiterung Dateien zur Anwendung hinzufügt, fügt sie auch eine **VS Code Debugger-Konfiguration** in .vscode/launch.json hinzu, um den Dienst beim Ausführen in einem Container zu debuggen. Die Erweiterung erkennt das Protokoll und den Port, die vom Dienst verwendet werden, und leitet den Browser an den Dienst weiter.
-
Setzen Sie einen Haltepunkt im
get()-Handler für die Route'/'inroutes/index.js. -
Stellen Sie sicher, dass die Debugger-Konfiguration Containers: Node.js Launch ausgewählt ist.

-
Starten Sie das Debugging (verwenden Sie die Taste F5).
- Das Image für den Dienst wird erstellt.
- Der Container für den Dienst wird ausgeführt.
- Der Browser öffnet sich auf dem (zufälligen) Port, der dem Dienst-Container zugeordnet ist.
- Der Debugger hält am Haltepunkt in
index.jsan.
Beachten Sie, dass der Haltepunkt möglicherweise beim ersten Mal verpasst wird, da der Debugger *nach* dem Start der Anwendung angehängt wird; Sie müssen den Browser möglicherweise neu laden, um den Debugger beim zweiten Versuch zu sehen.
Sie können die Anwendung so konfigurieren, dass sie auf den Anhang des Debuggers wartet, bevor die Ausführung beginnt, indem Sie die Eigenschaft inspectMode auf
breakin derdocker-run: debug-Aufgabe intasks.jsonunter demnode-Objekt setzen.
Anzeigen der Anwendungsprotokolle
Sie können die Protokolle in VS Code anzeigen, indem Sie den Befehl View Logs für den Container verwenden
-
Navigieren Sie zum Container Explorer.
-
Klicken Sie in der Ansicht **Containers** mit der rechten Maustaste auf Ihren Container und wählen Sie View Logs.

-
Die Ausgabe wird im Terminal angezeigt.
Nächste Schritte
Sie sind fertig! Da Ihr Container nun bereit ist, möchten Sie vielleicht