Comment modifier le code dans les conteneurs Docker avec le code Visual Studio

0
86

Le développement ou le débogage du code dans les conteneurs Docker peut être délicat. Vous vous connectez généralement au conteneur et utilisez des utilitaires shell pour modifier les fichiers. L'extension Remote Containers de Visual Studio Code vous permet d'ouvrir des dossiers à l'intérieur de conteneurs, afin que vous puissiez les utiliser dans votre éditeur de code.

Le développement à distance fonctionne avec Docker Desktop 2.0 et versions ultérieures pour Windows et macOS et Docker Moteur 18.06 et supérieur pour Linux. Si vous utilisez Windows 10 Home, vous devez avoir installé la mise à jour d'avril 2020, Docker Desktop 2.3 et le sous-système Windows pour Linux.

Côté conteneur, VS Code est compatible avec les conteneurs x64 et ARM. Vous pouvez utiliser les systèmes d'exploitation Alpine, Debian, Ubuntu, CentOS et RHEL. Si votre image de base ne fonctionne pas immédiatement, vous devriez pouvoir y installer des packages supplémentaires pour terminer la connexion.

Mise en route

Lancez VS Code, appuyez sur Ctrl+Maj+P et recherchez “extensions”. Sélectionnez “Installer les extensions” élément pour afficher la barre latérale. Dans le volet des extensions, recherchez “Remote – Conteneurs” et installez l'élément correspondant.

Une fois l'extension installée, un nouveau bouton vert apparaîtra en bas à gauche de votre barre d'état. Cliquez dessus pour afficher la palette de commandes, pré-remplie avec les commandes à distance disponibles. Si vous préférez éviter d'utiliser la souris, vous pouvez également trouver les commandes en appuyant sur Ctrl+Maj+P et en tapant “télécommande”. L'extension apparaîtra également dans d'autres zones de l'interface utilisateur, telles que la page d'accueil et le volet d'ouverture du dossier.

Publicité

Pour ouvrir votre premier dossier Dockerized, affichez la liste des commandes et sélectionnez “Attach to Running Container”. Vous devrez accuser réception d'un avertissement indiquant que le conteneur pourrait exécuter du code non fiable. Vous ne devez vous attacher qu'à des conteneurs créés à partir d'images de confiance, car un conteneur malveillant avec un fichier d'espace de travail VS Code pourrait compromettre votre système.

VS Code affichera une liste des conteneurs Docker en cours d'exécution sur votre système. Sélectionnez le conteneur auquel vous souhaitez vous connecter. Une nouvelle fenêtre s'ouvrira. Le démarrage peut prendre quelques secondes pendant que VS Code installe ses composants de serveur distant dans le conteneur. Vous verrez le conteneur actif affiché en bas à gauche de la barre d'état.

Une fois la fenêtre prête, vous pouvez commencer à travailler. Cliquez sur le bouton “Ouvrir le dossier” dans le volet gauche pour afficher une invite de sélection de fichiers. Cela affiche le système de fichiers dans le conteneur. Accédez au répertoire que vous souhaitez ouvrir et appuyez sur “OK”.

La barre latérale se mettra à jour pour afficher le contenu du répertoire sélectionné. Cliquez sur l'un des fichiers pour l'ouvrir dans l'éditeur de code VS. Vous pouvez désormais apporter des modifications à l'intérieur du conteneur, sans copier manuellement les fichiers ni configurer un montage de liaison de répertoire de travail. Cela maximise l'efficacité lors de l'utilisation d'un environnement de développement Dockerisé ou du débogage d'un conteneur défectueux.

VS Code&# L'ensemble complet de fonctionnalités du 8217 est disponible, y compris la complétion de code IntelliSense et sa boîte à outils de débogage. Des volets tels que la console et le terminal s'attacheront aux flux d'entrée et de sortie du conteneur.

Comment ça marche ?

La première chose à reconnaître à propos de l'intégration est que VS Code modifiera le système de fichiers de votre conteneur. Il installe un serveur dans les conteneurs auxquels vous vous connectez, qui renvoie les informations au client de l'éditeur.

< /p> Publicité

Le serveur surveille le système de fichiers, lit les fichiers et lance les processus dans le conteneur. Cela alimente des fonctionnalités telles que le débogueur de VS Code. L'éditeur demandera au serveur d'exécuter votre source, le laissant inspecter le code exécuté à l'intérieur du conteneur.

De même, VS Code installera des copies de vos autres extensions à l'intérieur du conteneur. Cela garantit qu'ils ont un accès complet au système de fichiers du conteneur, de sorte qu'ils fonctionneront sans anomalie par rapport à un dossier local. Le résultat final est une expérience d'éditeur à part entière qui fonctionne de manière transparente, même si elle est répartie sur votre hôte et vos conteneurs. Selon la taille de votre environnement, la configuration de la première exécution peut prendre quelques instants, mais le serveur de conteneurs sera mis en cache pour une utilisation ultérieure.

Conteneurs de développement

Au-delà de l'ouverture de fichiers dans un conteneur existant, le système distant permet de définir des conteneurs de développement qui encapsulent votre environnement de travail. Un tel conteneur doit inclure toutes les dépendances logicielles que vous avez installées avant de développer votre application localement.

Lorsque vous utilisez un conteneur de développement, vous pouvez soit lier le montage de votre répertoire de travail, soit utiliser un volume isolé. Cette dernière option évite la pollution du système de fichiers et offre des performances améliorées car elle est plus native à Docker.

Les conteneurs de développement sont créés à partir des fichiers .devcontainer/devcontainer.json. Ceux-ci décrivent la configuration Docker et Visual Studio qui lance votre environnement de développement.

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

Le fichier devcontainer.json illustré ci-dessus configure un conteneur de développement qui utilise le modèle Node.js de Microsoft. L'extension EditorConfig VS Code est activée, ajoutant la prise en charge des fichiers .editorconfig dans votre répertoire de travail. Le port 3000 est ensuite mappé de l'hôte dans le conteneur.

Publicité

Les fichiers de conteneur de développement prennent également en charge quelques autres options. Vous pouvez définir les valeurs VS Code settings.json, ajouter une commande à exécuter à l'intérieur du conteneur et définir l'utilisateur sous lequel le serveur VS Code s'exécutera.

Si vous ne souhaitez pas créer vous-même un fichier de configuration de conteneur, la commande Conteneurs distants : ajouter des fichiers de configuration de développement en ajoutera un automatiquement à votre projet. Vous pourrez choisir parmi une liste de modèles préconfigurés que vous pourrez personnaliser ultérieurement.

Une fois que vous avez un fichier devcontainer.json dans votre projet, exécutez le < strong>Conteneurs distants : reconstruire le conteneurcommande de la palette de commandes. Cela créera une image de conteneur à l'aide de la configuration spécifiée. Une fois la construction terminée, exécutez Remote-Containers : Reopen Folder in Container pour ouvrir votre répertoire local actuel dans un nouveau conteneur de développement.

Si vous utilisez un référentiel Git , il est généralement plus simple de cloner le référentiel directement dans un conteneur. Les Remote-Containers : Clone Repository in Container VolumeLa commande accepte une URL Git à cloner. Il créera un nouveau volume et l'attachera à une instance de conteneur de développement. Cela vous permet de travailler sur les dépôts Git sans les cloner sur votre système de fichiers local, évitant ainsi une pollution inutile. VS Code partage automatiquement vos informations d'identification Git locales avec le conteneur.

Configuration de l'extension

La télécommande – L'extension Containers est livrée avec plusieurs paramètres qui vous permettent de configurer votre expérience de conteneur. Vous pouvez les trouver avec la commande Remote-Containers : Settings for Remote-Containers.

La première collection de paramètres concerne les dotfiles. Les fichiers dot font référence aux fichiers de configuration qui commencent par un point (.). Les conteneurs distants peuvent cloner automatiquement un référentiel Git de fichiers dotfiles dans de nouveaux conteneurs, vous aidant à démarrer avec vos paramètres habituels.

Publicité

Ajoutez l'URL de votre référentiel dotfiles au paramètre Référentiel. Le référentiel sera cloné sur le chemin du chemin cible, qui est par défaut ~/dotfiles. Si vous souhaitez exécuter une commande après le clonage du référentiel, spécifiez-la en tant que commande d'installation.

Remote-Containers utilise par défaut docker comme binaire qui exécute les commandes de conteneur. Vous pouvez le remplacer par n'importe quel binaire compatible Docker CLI avec le paramètre Docker Path. Si vous utilisez Podman, spécifier podman comme valeur vous permettra de travailler avec ses conteneurs à l'aide de VS Code.

Vous pouvez configurer les extensions distantes par défaut sous l'en-tête Extensions par défaut. Cliquez sur “Ajouter un élément” pour choisir une extension à ajouter à chaque conteneur. Cela vous permet de garantir la disponibilité globale de vos extensions indispensables, même si elles ne sont pas répertoriées dans un fichier devcontainer.json.

Un dernier groupe de paramètres concerne la configuration de Git. Lorsque “Copier Git Config” est cochée, votre fichier .gitconfig local sera automatiquement copié dans les conteneurs. L'activation de cette option garantit que vos commits sont correctement attribués aux détails de l'utilisateur que vous utilisez déjà localement.

L'emplacement de configuration de Git Credential Helper” Ce paramètre contrôle le fichier de configuration dans lequel les nouvelles informations d'identification Git seront écrites. Vous pouvez sélectionner dans votre fichier local par utilisateur, ~/.gitconfig, ou l'emplacement global du système, /etc/gitconfig.

Résumé

La télécommande – L'extension Containers pour Visual Studio Code vous permet de modifier des fichiers et des dossiers dans les conteneurs Docker. Il fonctionne de manière transparente avec les fonctionnalités de l'éditeur de code VS, notamment IntelliSense, l'indexation de répertoires, le débogage et les extensions. En interne, VS Code lance un serveur de développement à l'intérieur du conteneur afin que ses outils aient un accès complet au système de fichiers avec lequel ils travaillent.

Publicité

Il existe plusieurs cas d'utilisation possibles pour cette fonctionnalité, avec Les environnements de développement dockerisés et le conteneur à la volée éditent les meilleurs candidats. Bien que l'idée d'utiliser des conteneurs pour systématiser le développement existe depuis un certain temps, VS Code facilite grandement le démarrage en offrant une expérience IDE qui comprend nativement Docker.

Vous pouvez préparer une image Docker qui donne développeurs tout ce dont ils ont besoin pour travailler sur votre système – langage de programmation, dépendances et outils de commodité. Les développeurs démarraient un conteneur, s'y connectaient à partir de VS Code et effectuaient leur travail sans rien installer (sauf Code) sur leur propre machine. Si une dépendance doit être corrigée, il vous suffit de mettre à jour l'image Docker partagée et d'amener les développeurs à extraire la nouvelle balise.