[PYTHON] Lancez plusieurs conteneurs dans le conteneur distant de VS Code pour basculer entre les tâches

introduction

Le conteneur distant de VSCode est pratique, n'est-ce pas? Il est préférable de pouvoir essayer différentes langues sans polluer l'environnement du PC local.

Cependant, même si je veux juste l'essayer rapidement, il est difficile de le définir pour chaque langue.

Dans cet article, je vais vous montrer comment vous connecter à plusieurs conteneurs avec un seul lancement.

Il est également écrit dans le document officiel, donc si vous voulez en savoir plus, cliquez ici. https://code.visualstudio.com/docs/remote/containers-advanced#_connecting-to-multiple-containers-at-once

Présentation du code de démonstration

Nous traiterons ici des conteneurs golang et python. . ├── golang │ ├── .devcontainer.json │ └── Dockerfile ├── python │ ├── .devcontainer.json │ └── Dockerfile └── docker-compose.yml

Détails du fichier de paramètres

  1. docker-compose.yml La source du code géré par remote-container est décrite dans docker-compose.yml.

Tout ce que vous avez à faire est de spécifier le répertoire dans build.context et d'écrire le chemin relatif à partir de là vers le Dockerfile dans le dockerfile.

Si vous n'aimez pas la structure des répertoires, vous pouvez la modifier librement.

docker-compose.yml


version: "3"
services:
  golang-container:
    build:
      context: golang 
      dockerfile: Dockerfile
    volumes:
      - .:/workspace:cached
    environment:
      TZ: "Asia/Tokyo"
    command: sleep infinity

  python-container:
    build:
      context: python 
      dockerfile: Dockerfile
    volumes:
      - .:/workspace:cached
    environment:
      TZ: "Asia/Tokyo"
    command: sleep infinity
  1. .devcontainer.json Les paramètres de chaque conteneur sont décrits dans .devcontainer.json.

Pour connecter la relation parent-enfant, les noms de dockerComposeFile et de service correspondent à ceux définis dans docker-compose.yml.

Vous pouvez empêcher l'affichage d'autres langues dans la fenêtre VS Code en spécifiant des répertoires séparés par langue avec workspaceFolder. (Il est bruyant car un avertissement apparaît lorsqu'il est affiché)

Il existe différentes extensions, vous pouvez donc les personnaliser à votre guise.

json:.devcontainer.json


{
    "name": "Dev Container Golang Env",
    "dockerComposeFile": "../docker-compose.yml",
    "service": "golang-container",
    "workspaceFolder": "/workspace/golang",
    "extensions": [
      "golang.go",
      "donjayamanne.githistory",
      "eamodio.gitlens",
      "codezombiech.gitignore",
      "mhutchie.git-graph",
      "esbenp.prettier-vscode",
      "coenraads.bracket-pair-colorizer",
      "ionutvmi.path-autocomplete"
    ],
    "terminal.integrated.shellArgs.linux": [
        "-l"
    ],
    "shutdownAction": "stopCompose"
}
  1. Dockerfile Décrivez les paramètres que vous souhaitez utiliser pour chaque conteneur.

Comme il est appliqué de la même manière qu'un Dockerfile normal, il est également pratique d'installer la bibliothèque.

Ici, nous avons installé l'outil complémentaire git que tout le monde adore.

Dockerfile


FROM golang:buster

WORKDIR /

RUN apt-get update \
 && apt-get install -y --no-install-recommends \
      git \
      openssh-client \
      procps \
      ca-certificates \
      curl \
      unzip \
      gnupg \
      vim \
      wget \
 && rm -rf /var/lib/apt/lists/*

# git
RUN wget https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -O ~/.git-completion.bash
RUN chmod a+x ~/.git-completion.bash
RUN echo "source ~/.git-completion.bash" >> ~/.bashrc
RUN wget https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh -O ~/.git-prompt.sh
RUN chmod a+x ~/.git-prompt.sh
RUN echo "source ~/.git-prompt.sh" >> ~/.bashrc

Comment démarrer plusieurs conteneurs

  1. Ouvrez la palette de commandes VS Code et sélectionnez Remote-Containers: Open Folder in Container ...
  2. Sélectionnez le répertoire que vous souhaitez ouvrir (cette fois le répertoire golang ou python)

Si vous procédez comme décrit ci-dessus en démarrant normalement Remote Container, il créera non seulement le conteneur sélectionné mais également d'autres conteneurs décrits dans les paramètres.

Pour basculer, sélectionnez simplement le répertoire que vous souhaitez ouvrir, comme dans les étapes 1 et 2. Le conteneur est en place au premier démarrage, vous pouvez donc changer de fenêtre et fonctionner immédiatement.

Si vous voulez une fenêtre séparée, vous pouvez créer une nouvelle fenêtre avec VS Code et suivre les étapes 1 et 2 à partir de là.

Résumé

J'ai présenté comment démarrer plusieurs conteneurs avec le conteneur distant de VS Code. Il y avait deux conteneurs ici, golang et python, mais vous pouvez les ajouter comme vous le souhaitez.

Ne serait-il pas utile lors de la gestion de plusieurs langues dans le référentiel privé de git? Il semble qu'il puisse également être utilisé pour la vérification du fonctionnement de différentes versions linguistiques.

Le code source est disponible sur github. https://github.com/fumiyakk/demo-multiple-remote-containers

python est élaboré pour utiliser la poésie. Je vais vous présenter l'environnement de développement de python qui combine la poésie et le noir.

Recommended Posts

Lancez plusieurs conteneurs dans le conteneur distant de VS Code pour basculer entre les tâches
[Janvier 2020] Commençons sérieusement le «conteneur de développement» explosif avec le conteneur distant de VS Code.
[Java] Comment basculer entre plusieurs versions de Java
[Django] Créez rapidement un environnement de développement de conteneur Django (Docker) à l'aide de VS Code + Remote Containers
Comment développer des conteneurs sur des serveurs distants avec VS Code Remote-Containers