Einführung Ihrer eigenen Einstellungen für Remote Containers, eine VS Code God-Erweiterung Offizielles Beispiel ist für die Öffentlichkeit zugänglich. Da die Verwendung jedoch schwierig ist, werde ich die bearbeiteten Einstellungen vorstellen, um die Verwendung zu vereinfachen. Darüber hinaus werden alle in diesem Artikel vorgestellten Einstellungsdateien im folgenden Repository veröffentlicht (einschließlich der in nicht eingeführten Umgebungen). https://github.com/sabure500/remote-container-sample
Ich dachte auch, es wäre gut, Remote-Container zu verwenden, also spiele ich mit den Einstellungen herum, um die Verwendung zu vereinfachen. Da dieser Artikel jedoch die stärkste lokale Umgebung "erstellen" möchte, gibt es die Idee, dass dies besser ist. Ich wäre Ihnen dankbar, wenn Sie es mir sagen könnten
Es ist eine Erweiterung von VSCode, mit der Sie VSCode in einem Container öffnen und damit arbeiten können. Da Sie VS Code direkt im Container öffnen und arbeiten können, können Sie die Entwicklungsumgebung sandboxen und an einem Ort entwickeln, der den lokalen Computer überhaupt nicht beeinflusst. Es gibt andere ähnliche Erweiterungsserien, "Remote SSH" und "Remote WSL", mit denen Sie VS-Code öffnen und im SSH-Ziel bzw. in der WSL arbeiten können. Weitere Informationen finden Sie auf der offiziellen Website.
Die folgenden zwei Installationen sind erforderlich, um eine Entwicklungsumgebung mit VSCode Remote Containers zu erstellen Wenn Sie dagegen die folgenden zwei haben, können Sie eine Umgebung wie Node, Python, Go, Java usw. erstellen, ohne etwas anderes auf dem lokalen Computer zu platzieren.
Docker Desktop for Windows or Mac Laden Sie das Installationsprogramm von der offiziellen Seite unten herunter https://www.docker.com/products/docker-desktop
Visual Studio Code
Download von der offiziellen Seite unten https://code.visualstudio.com/docs
Da Remote Containers eine normale Erweiterung ist, können Sie sie aus der Liste installieren, indem Sie sie nach der Installation von VS Code starten, die Erweiterung auf der Registerkarte links auswählen und nach "Remote Container" suchen. Alternativ können Sie es von der unten stehenden Marktplatzseite installieren. https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers
Klicken Sie nach dem Starten des Speicherorts, an dem sich die später eingeführte Einstellungsdatei für Remote-Container als Arbeitsbereich befindet, auf die grüne Markierung "> <" unten links im VS-Code und wählen Sie "Remote-Container: Im Container erneut öffnen".
Die Erstellung der Umgebung in Remote Containers erfolgt durch Platzieren von devcontainer.json, einer Einstellungsdatei für Remote Containers, und einer Docker-Datei (oder docker-compose.yaml usw.) im Verzeichnis .devcontainer. Ich werde die Einstellungen für jede Umgebung vorstellen
GoogleCloudSDK Ich verwende auch Remote-Container, wenn ich Google Cloud SDK-Befehle in meiner lokalen Umgebung verwende. Die Einstellungsdatei wird unten veröffentlicht, und grundsätzlich kann jeder sofort dieselbe Google Cloud SDK-Umgebung verwenden, indem er diese verwendet. Beschreiben der Einstellungen zum Erstellen der Umgebung Die gesamte Verzeichnisstruktur ist wie folgt
.
├ .devcontainer
├ devcontainer.json
├ Dockerfile
├ .config/fish/config.fish
└ .local/share/fish/fish_history
Dockerfile Datei zum Erstellen eines Containers, der tatsächlich als Entwicklungsumgebung verwendet wird Geben Sie zuerst das große Bild und erklären Sie dann jede Zeile
Dockerfile
FROM google/cloud-sdk:297.0.1-alpine
# ===== common area =====
RUN apk add --no-cache fish git openssh curl
COPY .config/fish/config.fish /root/.config/fish/config.fish
# =======================
# ===== kubernetes resource install =====
ENV KUBECTL_VERSION 1.18.4
ENV KUSTOMIZE_VERSION 3.1.0
ENV ARGOCD_VERSION 1.5.2
RUN curl -sfL -o /usr/local/bin/kubectl https://storage.googleapis.com/kubernetes-release/release/v${KUBECTL_VERSION}/bin/linux/amd64/kubectl \
&& curl -sfL -o /usr/local/bin/kustomize https://github.com/kubernetes-sigs/kustomize/releases/download/v${KUSTOMIZE_VERSION}/kustomize_${KUSTOMIZE_VERSION}_linux_amd64 \
&& curl -sfL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/download/v${ARGOCD_VERSION}/argocd-linux-amd64 \
&& chmod +x /usr/local/bin/kubectl /usr/local/bin/kustomize /usr/local/bin/argocd
# =======================
Basisbild
FROM google/cloud-sdk:297.0.1-alpine
Das Basisbild verwendet Google / Cloud-SDK: 297.0.1-alpine
Installation von Allzweckpaketen, die in der Umgebung verwendet werden
RUN apk add --no-cache fish git openssh curl
Da das Basis-Image alpin ist, installieren Sie mit apk das Paket, das Sie in der Entwicklungsumgebung verwenden möchten. Hier sind Fisch, Git, SSH, Curl enthalten. Wenn Sie jedoch Bash verwenden möchten, können Sie es anpassen, indem Sie Bash anstelle von Fisch einführen.
Einstellungen für Fischschale
COPY .config/fish/config.fish /root/.config/fish/config.fish
set normal (set_color normal)
set magenta (set_color magenta)
set yellow (set_color yellow)
set green (set_color green)
set red (set_color red)
set gray (set_color -o black)
# Fish git prompt
set __fish_git_prompt_showdirtystate 'yes'
set __fish_git_prompt_showstashstate 'yes'
set __fish_git_prompt_showuntrackedfiles 'yes'
set __fish_git_prompt_showupstream 'yes'
set __fish_git_prompt_color_branch yellow
set __fish_git_prompt_color_upstream_ahead green
set __fish_git_prompt_color_upstream_behind red
# Status Chars
set __fish_git_prompt_char_dirtystate '⚡'
set __fish_git_prompt_char_stagedstate '→'
set __fish_git_prompt_char_untrackedfiles '☡'
set __fish_git_prompt_char_stashstate '↩'
set __fish_git_prompt_char_upstream_ahead '+'
set __fish_git_prompt_char_upstream_behind '-'
function fish_prompt
set last_status $status
set_color $fish_color_cwd
printf '%s' (prompt_pwd)
set_color normal
printf '%s ' (__fish_git_prompt)
set_color normal
end
Verwenden Sie eine Fischschale als Arbeitsschale Da die Verwendung mit den Standardeinstellungen schwierig ist, kopieren Sie die Einstellungsdatei, um die Eingabeaufforderung zu ändern, z. B. das Anzeigen des Git-Zweigs, und platzieren Sie sie auf dem Container Ich verweise auf den folgenden Blog-Beitrag für die Fischeinstellungsdatei. https://www.martinklepsch.org/posts/git-prompt-for-fish-shell.html
Installation von Befehlen, die mit Google Cloud SDk verwendet werden
# ===== kubernetes resource install =====
ENV KUBECTL_VERSION 1.18.4
ENV KUSTOMIZE_VERSION 3.1.0
ENV ARGOCD_VERSION 1.5.2
RUN curl -sfL -o /usr/local/bin/kubectl https://storage.googleapis.com/kubernetes-release/release/v${KUBECTL_VERSION}/bin/linux/amd64/kubectl \
&& curl -sfL -o /usr/local/bin/kustomize https://github.com/kubernetes-sigs/kustomize/releases/download/v${KUSTOMIZE_VERSION}/kustomize_${KUSTOMIZE_VERSION}_linux_amd64 \
&& curl -sfL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/download/v${ARGOCD_VERSION}/argocd-linux-amd64 \
&& chmod +x /usr/local/bin/kubectl /usr/local/bin/kustomize /usr/local/bin/argocd
# =======================
Da GKE häufig ausschließlich als GCP-Ressource verwendet wird, werden Kubernetes-bezogene Ressourcen im Container installiert.
devcontainer.json Festlegen der Datei beim Öffnen eines Containers über VS Code Beschreiben der zu verwendenden Docker-Datei, der Erweiterungsfunktion bei Verwendung von VSCode für den Container, des Volumes aus der lokalen Umgebung usw. Weitere Informationen dazu, was Sie sonst noch tun können, finden Sie in der offiziellen Referenz (https://code.visualstudio.com/docs/remote/containers#_devcontainerjson-reference). Geben Sie zuerst das große Bild und erklären Sie dann jede Zeile
devcontainer.json
{
"name": "Google Cloud SDK Remote-Container",
"build" : {
"dockerfile": "Dockerfile"
},
"settings": {
"terminal.integrated.shell.linux": "/usr/bin/fish",
},
"extensions": [
"alefragnani.bookmarks",
"mhutchie.git-graph",
"redhat.vscode-yaml",
"zainchen.json"
],
"mounts": [
"source=${localEnv:HOME}/.ssh/,target=/root/.ssh/,type=bind,consistency=cached",
"source=${localEnv:HOME}/.gitconfig,target=/root/.gitconfig,type=bind,consistency=cached",
"source=${localWorkspaceFolder}/.devcontainer/.local/share/fish/fish_history,target=/root/.local/share/fish/fish_history,type=bind,consistency=cached",
"source=${localEnv:HOME}/.config/gcloud/,target=/root/.config/gcloud/,type=bind,consistency=cached",
"source=${localEnv:HOME}/.kube/,target=/root/.kube/,type=bind,consistency=cached",
],
}
Zu verwendendes Container-Image
"build" : {
"dockerfile": "Dockerfile"
},
Geben Sie den Speicherort der Docker-Datei an Wie in der Verzeichnisstruktur am Anfang gezeigt, wird es als "Dockerfile" geschrieben, da es sich im selben Verzeichnis befindet
Containerspezifische VS-Code-Einstellungen
"settings": {
"terminal.integrated.shell.linux": "/usr/bin/fish",
},
Beschreiben der VS-Code-Einstellungen, die Sie unabhängig für den Container festlegen möchten Zum Beispiel Einstellungen für Erweiterungen, die nicht lokal installiert, sondern auf dem Container installiert sind usw. In Bezug auf die Beschreibung der Einstellungen wird das, was lokal geschrieben wird, auf den Container vererbt, ohne es erneut auf devcontainer.json zu schreiben Hier auf dem Container beschreibt die Terminalschale nur die Verwendung von Fisch.
Einstellung der Erweiterungsfunktion, die von VS Code in der Containerumgebung verwendet wird
"extensions": [
"alefragnani.bookmarks",
"mhutchie.git-graph",
"redhat.vscode-yaml",
"zainchen.json"
],
Beschreiben Sie die Erweiterung, die Sie in der Containerumgebung verwenden möchten In Bezug auf die Erweiterungsfunktion wird im Gegensatz zu den Einstellungen, selbst wenn sie lokal installiert ist, diejenige, die nicht in devcontainer.json geschrieben ist, nicht auf dem Container installiert.
Mount aus der lokalen Umgebung
"mounts": [
"source=${localEnv:HOME}/.ssh/,target=/root/.ssh/,type=bind,consistency=cached",
"source=${localEnv:HOME}/.gitconfig,target=/root/.gitconfig,type=bind,consistency=cached",
"source=${localWorkspaceFolder}/.devcontainer/.local/share/fish/fish_history,target=/root/.local/share/fish/fish_history,type=bind,consistency=cached",
"source=${localEnv:HOME}/.config/gcloud/,target=/root/.config/gcloud/,type=bind,consistency=cached",
"source=${localEnv:HOME}/.kube/,target=/root/.kube/,type=bind,consistency=cached",
],
Stellen Sie eine Datei bereit, die Sie in Ihrer lokalen Umgebung verwenden möchten oder die beim Neustart des Containers nicht gelöscht werden soll "source =" gibt den lokalen Pfad an, "target =" gibt den Pfad auf dem Container an Durch Schreiben von $ {localEnv: XXXX} können Sie auch die Umgebungsvariable "XXXX" in der lokalen Umgebung verwenden. Hier haben wir 5 Dateiverzeichnisse gemountet
Java Ich verwende eine Umgebung mit OpenJDK + Wildfly + Maven + Gradle als Umgebung für Java. Diese Java-Umgebung wird ebenfalls eingeführt, wobei die Unterschiede zur oben eingeführten Google Cloud SDK-Umgebung im Mittelpunkt stehen. Die gesamte Verzeichnisstruktur ist wie folgt
.
├ .devcontainer
├ devcontainer.json
├ docker-compose.yaml
├ Dockerfile
├ .m2/
├ .gradle/
├ .config/fish/config.fish
└ .local/share/fish/fish_history
docker-compose Die Java-Umgebung verwendet Docker-Compose anstelle von Dockerfile, um das Docker-Netzwerk für die Verbindung mit der DB-Umgebung zu verwenden, die in einem separaten Container eingerichtet ist. Geben Sie zuerst das große Bild und erklären Sie dann jede Zeile
docker-compose.yaml
version: "3"
services:
jdk-wildfly-maven:
build: .
ports:
- "8080:8080"
- "9990:9990"
command: /bin/sh -c "while sleep 1000; do :; done"
volumes:
- $HOME/.ssh:/root/.ssh
- $HOME/.gitconfig:/root/.gitconfig
- .local/share/fish/fish_history:/root/.local/share/fish/fish_history
- ..:/workspace
- ./jboss_home/configuration/standalone.xml:/opt/wildfly/standalone/configuration/standalone.xml
- .m2:/root/.m2
- .gradle:/root/.gradle
networks:
- remote-container_common-network
networks:
remote-container_common-network:
external: true
Portweiterleitung von der lokalen Umgebung zur Containerumgebung
ports:
- "8080:8080"
- "9990:9990"
Auf die Standardports 8080 und 9990 von Wildfly wird im Container zugegriffen, wenn auf den Zielport in der lokalen Umgebung zugegriffen wird.
Standardbefehl für Container überschreiben
command: /bin/sh -c "while sleep 1000; do :; done"
Überschreiben Sie den Standardbefehl, damit der Container nicht angehalten wird, wenn der Standardbefehl beim Start des Containers fehlschlägt oder beendet wird Der hier beschriebene Befehl ist die Standardeinstellung von Remote Containers, wenn Docker-Compose nicht verwendet wird. Bei Verwendung von Docker-Compose muss es explizit geschrieben werden
Mount aus der lokalen Umgebung
volumes:
- $HOME/.ssh:/root/.ssh
- $HOME/.gitconfig:/root/.gitconfig
- .local/share/fish/fish_history:/root/.local/share/fish/fish_history
- ..:/workspace
- ./jboss_home/configuration/standalone.xml:/opt/wildfly/standalone/configuration/standalone.xml
- .m2:/root/.m2
- .gradle:/root/.gradle
Mounts aus der lokalen Umgebung sollten in docker-compose.yaml anstelle von devcontainer.json geschrieben werden Der Unterschied zum Fall von Dockerfile besteht darin, dass der Arbeitsbereich selbst explizit angegeben und als "..: / workspace" geschrieben bereitgestellt wird. Gradle- und Maven-Einstellungen und -Repositorys werden mit ".m2: /root/.m2" und ".gradle: /root/.gradle" als Einstellungen für die Java-Umgebung bereitgestellt. Da dies nur in dieser Umgebung verwendet wird, wird es direkt im WorkSpace anstelle des Benutzerheims ($ HOME) bereitgestellt. In Bezug auf die Wildfly-Konfigurationsdatei standalone.xml können die Datenquelleneinstellungen usw. während der Entwicklung immer geändert werden. Dies ist ein Problem, wenn sie bei jedem Neustart des Containers gelöscht werden. "./Jboss_home/configuration/" Es wird in Form von standalone.xml bereitgestellt: /opt/wildfly/standalone/configuration/standalone.xml "
Docker-Netzwerk verwenden
networks:
- remote-container_common-network
networks:
remote-container_common-network:
external: true
Java wird als Anwendungsausführungsumgebung verwendet, daher möchte ich eine Verbindung zur Datenbank herstellen Die Datenbank wird als Container in der lokalen Umgebung gestartet. Erstellen Sie daher ein Docker-Netzwerk und verwenden Sie es, um eine Verbindung mit anderen Containern herzustellen. Um diese Umgebung nutzen zu können, muss daher im Voraus ein Netzwerk mit dem folgenden Befehl erstellt werden.
```bash
docker network create --driver bridge remote-container_common-network
```
Dockerfile Docker-Datei, die die in docker-compose.yaml angegebene OpenJDK + Wildfly + maven + Gradle-Umgebung erstellt Als Basisbild ist das offizielle JBoss-Bild "jboss / wildfly" groß und schwierig zu verwenden, und ich wollte ein alpines Bild verwenden, also habe ich es basierend auf Adoptopenjdk erstellt.
Dockerfile
FROM adoptopenjdk/openjdk11:alpine-slim
# ===== common area =====
ENV WORKSPACE_DIR "/workspace"
RUN apk add --no-cache fish git openssh curl wget tar unzip\
&& mkdir -p $WORKSPACE_DIR
COPY .config/fish/config.fish /root/.config/fish/config.fish
# =======================
# ==== wildfly install =====
ENV JBOSS_HOME "/opt/wildfly"
ENV WILDFLY_VERSION "20.0.0.Final"
RUN wget -P /opt http://download.jboss.org/wildfly/${WILDFLY_VERSION}/wildfly-${WILDFLY_VERSION}.tar.gz \
&& tar -zxvf /opt/wildfly-${WILDFLY_VERSION}.tar.gz -C /opt \
&& rm /opt/wildfly-${WILDFLY_VERSION}.tar.gz \
&& mv /opt/wildfly-${WILDFLY_VERSION} ${JBOSS_HOME} \
&& $JBOSS_HOME/bin/add-user.sh admin admin --silent
# =======================
# ==== maven install =====
ENV MAVEN_HOME "/opt/maven"
ENV MAVEN_VERSION 3.6.3
ENV PATH "$PATH:$MAVEN_HOME/bin"
ENV MAVEN_CONFIG "$HOME/.m2"
RUN curl -fsSL -o /opt/apache-maven-${MAVEN_VERSION}-bin.tar.gz http://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
&& tar -zxvf /opt/apache-maven-${MAVEN_VERSION}-bin.tar.gz -C /opt \
&& rm /opt/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
&& mv /opt/apache-maven-${MAVEN_VERSION} /opt/maven
# =======================
# ==== gradle install ====
ENV GRADLE_HOME "/opt/gradle"
ENV GRADLE_VERSION 6.5
ENV PATH "$PATH:$GRADLE_HOME/bin"
RUN curl -fsSL -o /opt/gradle-${GRADLE_VERSION}-bin.zip https://downloads.gradle-dn.com/distributions/gradle-${GRADLE_VERSION}-bin.zip \
&& unzip -d /opt /opt/gradle-${GRADLE_VERSION}-bin.zip \
&& rm /opt/gradle-${GRADLE_VERSION}-bin.zip \
&& mv /opt/gradle-${GRADLE_VERSION} /opt/gradle
# =======================
devcontainer.json Die Standardeinstellungen und verfügbaren Einstellungen von devcontainer.json haben sich geändert, je nachdem, ob Dockerfile oder Docker-Compose verwendet wird (z. B. ist das Mounten nicht effektiv, selbst wenn es in devcontainer.json und Docker-Compose beschrieben ist Muss beschrieben werden in) Weitere Informationen finden Sie unter Offizielle Referenz.
devcontainer.json
{
"name": "JDK&Wildfly&Maven&Gradle Remote-Container",
"dockerComposeFile": "docker-compose.yaml",
"service" : "jdk-wildfly-maven",
"workspaceFolder": "/workspace",
"settings": {
"terminal.integrated.shell.linux": "/usr/bin/fish",
"java.home": "/opt/java/openjdk",
"maven.executable.preferMavenWrapper": false,
"maven.executable.path": "/opt/maven/bin",
"maven.terminal.useJavaHome": true,
"java.jdt.ls.vmargs": "-noverify -Xmx1G -XX:+UseG1GC -XX:+UseStringDeduplication -javaagent:\"/root/.vscode/extensions/gabrielbb.vscode-lombok-1.0.1/server/lombok.jar\"",
},
"extensions": [
"alefragnani.bookmarks",
"mhutchie.git-graph",
"vscjava.vscode-java-pack",
"shengchen.vscode-checkstyle",
"gabrielbb.vscode-lombok",
"naco-siren.gradle-langua"
],
"shutdownAction": "stopCompose"
}
Bilder und Dienste zu verwenden
"dockerComposeFile": "docker-compose.yaml",
"service" : "jdk-wildfly-maven",
Verwenden Sie bei Verwendung von docker-compose "dockerComposeFile" und geben Sie den Speicherort von docker-compose.yaml an. Außerdem besteht im Fall von Docker-Compose die Möglichkeit, dass mehrere Container ausgeführt werden. Geben Sie daher an, welcher Container VS-Code mit Dienst öffnen soll.
Geben Sie den Arbeitsbereichsordner an
"workspaceFolder": "/workspace",
Im Gegensatz zu Dockerfile muss bei Docker-Compose der Speicherort des anzuhängenden Arbeitsbereichs explizit angegeben werden. In diesem Fall können Sie kein Verzeichnis angeben, das nicht vorhanden ist. Erstellen Sie daher zuerst ein Verzeichnis wie / workspace in der Docker-Datei.
Java-spezifische Einstellungen
"settings": {
"terminal.integrated.shell.linux": "/usr/bin/fish",
"java.home": "/opt/java/openjdk",
"maven.executable.preferMavenWrapper": false,
"maven.executable.path": "/opt/maven/bin",
"maven.terminal.useJavaHome": true,
"java.jdt.ls.vmargs": "-noverify -Xmx1G -XX:+UseG1GC -XX:+UseStringDeduplication -javaagent:\"/root/.vscode/extensions/gabrielbb.vscode-lombok-1.0.1/server/lombok.jar\"",
},
"extensions": [
"alefragnani.bookmarks",
"mhutchie.git-graph",
"vscjava.vscode-java-pack",
"shengchen.vscode-checkstyle",
"gabrielbb.vscode-lombok",
"naco-siren.gradle-langua"
],
Obwohl es nicht im VS-Code der lokalen Umgebung enthalten ist, wird die gewünschte Erweiterung in der Java-Umgebung angegeben. Außerdem wird der Inhalt von Einstellungen beschrieben, die Sie nur auf den Container anwenden möchten, der die Erweiterung unterstützt.
MySQL Erstellen Sie eine Datenbank zur Verwendung aus Java, die im vorherigen Kapitel in einem Container erstellt wurde Es ist nicht sehr sinnvoll, diese Umgebung mit Remote-Containern zu erstellen, aber aus Gründen der Vereinheitlichung wird sie mit Remote-Containern erstellt. Es gibt kein Problem, auch wenn Sie es einfach mit Docker-Compose starten. Erstellen Sie vor dem Erstellen dieser Umgebung für die Verbindung mit anderen Containern (Java-Umgebung) ein Docker-Netzwerk mit dem folgenden Befehl (Wenn Sie es bereits haben, gibt es kein Problem)
docker network create --driver bridge remote-container_common-network
Die gesamte Verzeichnisstruktur und Einstellungsdatei sind wie folgt
.
├ .devcontainer
│ ├ devcontainer.json
│ ├ docker-compose.yaml
│ └ my.cnf
└ db
docker-compose.yaml
version: "3"
services:
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: pass
TZ: "Asia/Tokyo"
ports:
- "3306:3306"
volumes:
- ../db/data:/var/lib/mysql
- ./my.cnf:/etc/mysql/conf.d/my.cnf
networks:
- remote-container_common-network
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
PMA_ARBITRARY: 1
ports:
- 3307:80
depends_on:
- mysql
networks:
- remote-container_common-network
networks:
remote-container_common-network:
external: true
devcontainer.json
{
"name": "MySQL Remote-Container",
"dockerComposeFile": "docker-compose.yaml",
"service" : "mysql",
"workspaceFolder": "/root",
"settings": {
"terminal.integrated.shell.linux": "/bin/bash",
},
"extensions": [],
"shutdownAction": "stopCompose"
}
Dieses Mal baue ich meine eigene lokale Umgebung auf, daher nehme ich Remote-Container-Einstellungen vor, vorausgesetzt, dass mehrere Anwendungen in einer Umgebung verarbeitet werden. Mit anderen Worten, das Folgende
.
├ .devcontainer
├ application1
│ ├ .git
│ └ source code
├ application2
│ ├ .git
│ └ source code
Es ist besser, eine Remote-Container-Einstellung für eine Anwendung anstelle der obigen Konfiguration zu erstellen, da dies den Vorteil hat, dass die Entwicklungsumgebung dieser Anwendung auf Git verwaltet werden kann und alle Entwickler dieselbe Umgebung verwenden können. ich glaube, dass der Mit anderen Worten, das Folgende
.
├ application1
│ ├ .devcontainer
│ ├ .git
│ └ source code
├ application2
│ ├ .devcontainer
│ ├ .git
│ └ source code
Bei einer solchen Managementmethode ist es jedoch besser, sich gut mit dem Team zu beraten und zu entscheiden, was zu tun ist, da es zu einem Krieg kommen kann, wenn Sie die diesmal eingeführte ursprüngliche Fischeinstellung einfügen.
Beenden Sie die Vor- und Nachteile, die Sie am Ende verwendet haben
Recommended Posts