Der Remote Container von VSCode ist praktisch, nicht wahr? Es ist am besten, verschiedene Sprachen ausprobieren zu können, ohne die Umgebung des lokalen PCs zu verschmutzen.
Obwohl ich es nur schnell ausprobieren möchte, ist es schwierig, es für jede Sprache festzulegen.
In diesem Beitrag werde ich Ihnen zeigen, wie Sie mit nur einem Start eine Verbindung zu mehreren Containern herstellen.
Es ist auch im offiziellen Dokument geschrieben. Wenn Sie mehr wissen möchten, klicken Sie hier. https://code.visualstudio.com/docs/remote/containers-advanced#_connecting-to-multiple-containers-at-once
Wir werden uns hier mit Golang- und Python-Containern befassen.
. ├── golang │ ├── .devcontainer.json │ └── Dockerfile ├── python │ ├── .devcontainer.json │ └── Dockerfile └── docker-compose.yml
Sie müssen lediglich das Verzeichnis in build.context angeben und den relativen Pfad von dort zur Docker-Datei in die Docker-Datei schreiben.
Wenn Ihnen die Verzeichnisstruktur nicht gefällt, können Sie sie frei ändern.
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
Um die Eltern-Kind-Beziehung zu verbinden, stimmen die Namen von dockerComposeFile und service mit denen überein, die in docker-compose.yml definiert sind.
Sie können verhindern, dass andere Sprachen im VS-Code-Fenster angezeigt werden, indem Sie die durch Sprache getrennten Verzeichnisse mit workspaceFolder angeben. (Es ist laut, weil eine Warnung angezeigt wird, wenn es angezeigt wird.)
Es gibt verschiedene Erweiterungen, sodass Sie sie nach Ihren Wünschen anpassen können.
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"
}
Da es wie eine normale Docker-Datei angewendet wird, ist es auch praktisch, die Bibliothek zu installieren.
Hier haben wir das Git-Komplementär-Tool installiert, das jeder liebt.
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
Wenn Sie wie oben beschrieben arbeiten, indem Sie Remote Container normal starten, werden nicht nur der ausgewählte Container, sondern auch andere in den Einstellungen beschriebene Container erstellt.
Wählen Sie zum Wechseln einfach das Verzeichnis aus, das Sie öffnen möchten, wie in Schritt 1 und 2 beschrieben. Der Container ist beim ersten Start aktiv, sodass Sie die Fenster wechseln und sofort arbeiten können.
Wenn Sie ein separates Fenster wünschen, können Sie ein neues Fenster mit VS-Code erstellen und von dort aus die Schritte 1 und 2 ausführen.
Ich habe vorgestellt, wie mehrere Container mit dem Remote-Container von VS Code gestartet werden. Es gab hier zwei Container, Golang und Python, aber Sie können sie hinzufügen, wie Sie möchten.
Wäre es nicht nützlich, wenn Sie mehrere Sprachen im privaten Repository von git verwalten? Es scheint, dass es auch zur Überprüfung des Betriebs verschiedener Sprachversionen verwendet werden kann.
Der Quellcode ist auf github verfügbar. https://github.com/fumiyakk/demo-multiple-remote-containers
Python ist aufwendig, um Poesie zu verwenden. Ich werde die Entwicklungsumgebung von Python vorstellen, die Poesie und Schwarz kombiniert.
Recommended Posts