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
Nous traiterons ici des conteneurs golang et python.
. ├── golang │ ├── .devcontainer.json │ └── Dockerfile ├── python │ ├── .devcontainer.json │ └── Dockerfile └── 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
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"
}
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
Remote-Containers: Open Folder in Container ...
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à.
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