So bearbeiten Sie Code in Docker-Containern mit Visual Studio-Code

0
233

Das Entwickeln oder Debuggen von Code in Docker-Containern kann schwierig sein. Normalerweise hängen Sie an den Container an und verwenden Shell-Dienstprogramme, um Dateien zu bearbeiten. Mit der Remote Containers-Erweiterung von Visual Studio Code können Sie Ordner in Containern öffnen, sodass Sie mit ihnen in Ihrem Code-Editor arbeiten können.

Die Remote-Entwicklung funktioniert mit Docker Desktop 2.0 und höher für Windows und macOS und Docker Engine 18.06 und höher für Linux. Wenn Sie Windows 10 Home verwenden, müssen Sie das Update vom April 2020, Docker Desktop 2.3 und das Windows-Subsystem für Linux installiert haben.

Auf der Containerseite ist VS Code sowohl mit x64- als auch mit ARM-Containern kompatibel. Sie können die Betriebssysteme Alpine, Debian, Ubuntu, CentOS und RHEL verwenden. Wenn Ihr Basis-Image nicht sofort funktioniert, sollten Sie zusätzliche Pakete darin installieren können, um die Verbindung abzuschließen.

Erste Schritte

Starten Sie VS Code, drücken Sie Strg+Umschalt+P und suchen Sie nach “Erweiterungen”. Wählen Sie die Option “Erweiterungen installieren” Element, um die Seitenleiste anzuzeigen. Suchen Sie im Erweiterungsbereich nach “Remote– Behälter” und installieren Sie das passende Element.

Nachdem die Erweiterung installiert wurde, wird unten links in Ihrer Statusleiste eine neue grüne Schaltfläche angezeigt. Klicken Sie darauf, um die Befehlspalette aufzurufen, die bereits mit verfügbaren Remote-Befehlen gefüllt ist. Wenn Sie die Maus lieber vermeiden möchten, können Sie die Befehle auch aufrufen, indem Sie Strg+Umschalt+P drücken und “Remote” eingeben. Die Erweiterung wird auch in anderen Bereichen der Benutzeroberfläche angezeigt, z. B. auf der Willkommensseite und im Ordneröffnungsbereich.

Werbung

Um Ihren ersten Dockerized-Ordner zu öffnen, rufen Sie die Befehlsliste auf und wählen Sie “Attach to Running Container”. Sie müssen eine Warnung bestätigen, dass der Container nicht vertrauenswürdigen Code ausführen könnte. Sie sollten nur an Container anhängen, die aus vertrauenswürdigen Images erstellt wurden, da ein bösartiger Container mit einer VS Code-Arbeitsbereichsdatei Ihr System gefährden könnte.

VS Code zeigt eine Liste der Docker-Container an, die auf Ihrem System ausgeführt werden. Wählen Sie den Container aus, zu dem Sie eine Verbindung herstellen möchten. Ein neues Fenster wird geöffnet. Es kann einige Sekunden dauern, bis VS Code seine Remoteserverkomponenten im Container installiert. Der aktive Container wird unten links in der Statusleiste angezeigt.

Sobald das Fenster fertig ist, können Sie mit der Arbeit beginnen. Klicken Sie auf die Schaltfläche “Ordner öffnen” Schaltfläche im linken Bereich, um eine Eingabeaufforderung für die Dateiauswahl anzuzeigen. Dies zeigt das Dateisystem innerhalb des Containers an. Navigieren Sie zu dem Verzeichnis, das Sie öffnen möchten, und drücken Sie “OK”.

Die Seitenleiste wird aktualisiert, um den Inhalt des ausgewählten Verzeichnisses anzuzeigen. Klicken Sie auf eine der Dateien, um sie im VS Code-Editor zu öffnen. Sie können jetzt innerhalb des Containers Änderungen vornehmen, ohne manuell Dateien zu kopieren oder ein Arbeitsverzeichnis-Bind-Mount einzurichten. Dies maximiert die Effizienz bei der Verwendung einer Dockerized-Entwicklungsumgebung oder beim Debuggen eines fehlerhaften Containers.

Der vollständige Funktionsumfang von VS Code ist verfügbar, einschließlich der IntelliSense-Codevervollständigung und des Debugging-Toolkits. Bereiche wie die Konsole und das Terminal werden an die Eingabe- und Ausgabestreams des Containers angehängt.

Wie funktioniert es?

Das erste, was Sie bei der Integration erkennen müssen, ist, dass VS Code das Dateisystem Ihres Containers ändert. Es wird in den Containern, mit denen Sie sich verbinden, einen Server installiert, der Informationen an den Editor-Client zurückgibt.

Ankündigung

Der Server überwacht das Dateisystem, liest Dateien und startet Prozesse innerhalb des Containers. Dies unterstützt Funktionen wie den Debugger von VS Code. Der Editor fordert den Server auf, Ihren Quellcode auszuführen, damit er den Code überprüfen kann, der im Container ausgeführt wird.

Ebenso installiert VS Code Kopien Ihrer anderen Erweiterungen im Container. Dadurch wird sichergestellt, dass sie vollen Zugriff auf das Container-Dateisystem haben, sodass sie im Vergleich zu einem lokalen Ordner ohne Abweichungen funktionieren. Das Endergebnis ist ein vollwertiges Editor-Erlebnis, das transparent funktioniert, obwohl es auf Ihren Host und Ihre Container verteilt ist. Abhängig von der Größe Ihrer Umgebung kann die Ersteinrichtung einige Augenblicke dauern, aber der Containerserver wird für die spätere Verwendung zwischengespeichert.

Entwicklungscontainer

Über das Öffnen von Dateien in einem vorhandenen Container hinaus können Sie mit dem Remote-System Entwicklungscontainer definieren, die Ihre Arbeitsumgebung kapseln. Ein solcher Container sollte alle Softwareabhängigkeiten enthalten, die Sie installieren würden, bevor Sie Ihre Anwendung lokal entwickeln.

Wenn Sie einen Entwicklungscontainer verwenden, können Sie entweder Ihr Arbeitsverzeichnis binden oder ein isoliertes Volume verwenden. Die letztere Option vermeidet die Verschmutzung des Dateisystems und bietet eine verbesserte Leistung, da sie nativer für Docker ist.

Entwicklungscontainer werden aus .devcontainer/devcontainer.json-Dateien erstellt. Diese beschreiben die Docker- und Visual Studio-Konfiguration, die Ihre Entwicklungsumgebung startet.

{ "image": "mcr.microsoft.com/vscode/devcontainers/javascript-node:16", "extensions": " EditorConfig.EditorConfig”, “forwardPorts”: [3000] }

Die oben gezeigte Datei devcontainer.json richtet einen Entwicklungscontainer ein, der die Node.js-Vorlage von Microsoft verwendet. Die EditorConfig VS Code-Erweiterung ist aktiviert, wodurch Unterstützung für .editorconfig-Dateien in Ihrem Arbeitsverzeichnis hinzugefügt wird. Port 3000 wird dann vom Host in den Container gemappt.

Werbung

Dev-Container-Dateien unterstützen auch einige andere Optionen. Sie können VS Code settings.json-Werte festlegen, einen Befehl zur Ausführung innerhalb des Containers hinzufügen und den Benutzer definieren, unter dem der VS Code-Server ausgeführt wird.

Wenn Sie keine Container-Konfigurationsdatei selbst erstellen möchten, fügt der Befehl Remote-Container: Entwicklungskonfigurationsdateien hinzufügen automatisch eine zu Ihrem Projekt hinzu. Sie können aus einer Liste vorkonfigurierter Vorlagen auswählen, die Sie später anpassen können.

Sobald Sie eine devcontainer.json-Datei in Ihrem Projekt haben, führen Sie die < strong>Remote-Container: Container umbauenBefehl aus der Befehlspalette. Dadurch wird ein Container-Image mit der angegebenen Konfiguration erstellt. Wenn der Build abgeschlossen ist, führen Sie Remote-Containers: Ordner im Container erneut öffnen aus, um Ihr aktuelles lokales Verzeichnis in einem neuen Entwicklungscontainer zu öffnen.

Wenn Sie ein Git-Repository verwenden , ist es normalerweise einfacher, das Repository direkt in einen Container zu klonen. Die Remote-Container: Klon-Repository im Container-Volume-Befehl akzeptiert eine Git-URL zum Klonen. Es wird ein neues Volume erstellt und an eine Dev-Container-Instanz angehängt. Auf diese Weise können Sie an Git-Repos arbeiten, ohne sie in Ihr lokales Dateisystem zu klonen, wodurch unnötige Verschmutzung vermieden wird. VS Code teilt Ihre lokalen Git-Anmeldeinformationen automatisch mit dem Container.

Konfigurieren der Erweiterung

The Remote – Die Containers-Erweiterung enthält mehrere Einstellungen, mit denen Sie Ihre Containererfahrung konfigurieren können. Sie finden sie mit dem Befehl Remote-Container: Einstellungen für Remote-Container.

Die erste Sammlung von Einstellungen betrifft Punktdateien. Punktdateien beziehen sich auf Konfigurationsdateien, die mit einem Punkt (.) beginnen. Remote-Container können automatisch ein Git-Repository mit Dotfiles in neue Container klonen, sodass Sie mit Ihren üblichen Einstellungen sofort loslegen können.

Werbung

Fügen Sie Ihre dotfiles-Repository-URL zur Repository-Einstellung hinzu. Das Repository wird in den Zielpfadpfad geklont, der standardmäßig ~/dotfiles ist. Wenn Sie einen Befehl ausführen möchten, nachdem das Repository geklont wurde, geben Sie ihn als Installationsbefehl an.

Remote-Containers verwendet standardmäßig Docker als Binärdatei, die Containerbefehle ausführt. Sie können dies mit der Docker-Pfad-Einstellung in jede Docker-CLI-kompatible Binärdatei ändern. Wenn Sie Podman verwenden, können Sie durch die Angabe von podman als diesen Wert mit seinen Containern mithilfe von VS Code arbeiten.

Sie können Standard-Remote-Erweiterungen unter der Überschrift Standard-Erweiterungen konfigurieren. Klicken Sie auf “Artikel hinzufügen” um eine Erweiterung auszuwählen, die zu jedem Container hinzugefügt werden soll. Auf diese Weise können Sie die globale Verfügbarkeit Ihrer unverzichtbaren Erweiterungen sicherstellen, auch wenn sie nicht in einer devcontainer.json-Datei aufgeführt sind.

Eine letzte Gruppe von Einstellungen betrifft die Git-Konfiguration. Wenn “Git-Konfiguration kopieren” aktiviert ist, wird Ihre lokale .gitconfig-Datei automatisch automatisch in Container kopiert. Wenn Sie dies aktivieren, wird sichergestellt, dass Ihre Commits korrekt den Benutzerdetails zugeordnet werden, die Sie bereits lokal verwenden.

Der “Speicherort der Git Credential Helper-Konfiguration” Die Einstellung steuert die Konfigurationsdatei, in die neue Git-Anmeldeinformationen geschrieben werden. Sie können aus Ihrer lokalen Datei pro Benutzer ~/.gitconfig oder dem globalen Systemspeicherort /etc/gitconfig auswählen.

Zusammenfassung

Die Fernbedienung – Mit der Container-Erweiterung für Visual Studio Code können Sie Dateien und Ordner in Docker-Containern bearbeiten. Es funktioniert nahtlos mit den VS Code-Editor-Funktionen, einschließlich IntelliSense, Verzeichnisindizierung, Debugging und Erweiterungen. Intern startet VS Code einen Entwicklungsserver innerhalb des Containers, sodass seine Tools vollen Zugriff auf das Dateisystem haben, mit dem sie arbeiten.

Werbung

Es gibt mehrere mögliche Anwendungsfälle für diese Funktionalität, mit Dockerisierte Entwicklungsumgebungen und On-the-Fly-Container bearbeiten die Top-Anwärter. Während die Idee, Container zur Systematisierung der Entwicklung zu verwenden, schon seit einiger Zeit im Umlauf ist, erleichtert VS Code den Einstieg erheblich, indem eine IDE-Erfahrung angeboten wird, die Docker nativ versteht.

Sie könnten ein Docker-Image vorbereiten, das Entwickler alles, was sie für die Arbeit an Ihrem System benötigen – Programmiersprache, Abhängigkeiten und Komforttools. Entwickler starteten einen Container, stellten eine Verbindung zu ihm von VS Code her und gingen ihrer Arbeit nach, ohne etwas (außer Code) auf ihrem eigenen Computer zu installieren. Wenn eine Abhängigkeit gepatcht werden muss, müssen Sie nur das freigegebene Docker-Image aktualisieren und die Entwickler dazu bringen, das neue Tag zu ziehen.