Container Tools-Erweiterung anpassen
Die Container Tools-Erweiterung enthält mehrere Visual Studio Code-Tasks zur Steuerung des Verhaltens von Docker build und run und bildet die Grundlage für den Containerstart zum Debuggen.
Die Tasks ermöglichen eine weitgehende Kontrolle und Anpassung. Die endgültige Konfiguration ist eine Kombination aus allgemeinen Standardwerten, plattformspezifischen Standardwerten (wie Node.js, Python oder .NET) und Benutzereingaben. Benutzereingaben haben Vorrang, wenn sie mit Standardwerten kollidieren.
Alle gängigen Funktionen von Visual Studio Code-Tasks (z. B. Gruppierung von Tasks in zusammengesetzten Tasks) werden von den Container Tools-Erweiterungs-Tasks unterstützt. Weitere Informationen zu gängigen Taskfunktionen und -eigenschaften finden Sie in der Dokumentation zu den benutzerdefinierten Tasks von Visual Studio Code.
Docker Build-Task
Der Task docker-build erstellt Images mithilfe der Docker-Befehlszeile (CLI). Der Task kann eigenständig oder als Teil einer Taskkette zum Ausführen und/oder Debuggen einer Anwendung in einem Container verwendet werden.
Die wichtigsten Konfigurationseinstellungen für den Task docker-build sind dockerBuild und platform
- Das Objekt
dockerBuildgibt Parameter für den Docker-Build-Befehl an. Die von diesem Objekt angegebenen Werte werden direkt auf die Docker-Build-CLI-Aufrufung angewendet. - Die Eigenschaft
platformist ein Hinweis, der beeinflusst, wie der Taskdocker-builddie Docker-Build-Standardwerte bestimmt.
Siehe Eigenschaftenreferenz für die vollständige Liste aller Task-Eigenschaften.
Plattformunterstützung
Während der Task docker-build in tasks.json zum Erstellen beliebiger Images verwendet werden kann, verfügt die Erweiterung über explizite Unterstützung (und vereinfachte Konfiguration) für Node.js, Python und .NET Core.
Node.js (docker-build)
Minimale Konfiguration mit Standardwerten
Ein auf Node.js basierendes Image ohne spezifische Plattformoptionen kann einfach die Eigenschaft platform auf node setzen
{
"version": "2.0.0",
"tasks": [
{
"label": "Build Node Image",
"type": "docker-build",
"platform": "node"
}
]
}
Plattformstandardwerte
Für auf Node.js basierende Images leitet der Task docker-build die folgenden Optionen ab
| Eigenschaft | Abgeleiteter Wert |
|---|---|
dockerBuild.context |
Das gleiche Verzeichnis, in dem sich package.json befindet. |
dockerBuild.dockerfile |
Die Datei Dockerfile im selben Verzeichnis wie package.json. |
dockerBuild.tag |
Die Eigenschaft name der Anwendung in package.json (falls definiert), andernfalls der Basisname des Ordners, in dem sich package.json befindet. |
dockerBuild.pull |
Standardmäßig true, um neue Basisimages vor dem Builden herunterzuladen. |
Python (docker-build)
Minimale Konfiguration mit Standardwerten
Ein auf Python basierendes Image ohne spezifische Plattformoptionen kann einfach die Eigenschaft platform auf python setzen
{
"tasks": [
{
"type": "docker-build",
"label": "docker-build",
"platform": "python"
}
]
}
Plattformstandardwerte
Für auf Python basierende Images leitet der Task docker-build die folgenden Optionen ab
| Eigenschaft | Abgeleiteter Wert |
|---|---|
dockerBuild.context |
Der Standardkontext ist der Arbeitsbereichsordner. |
dockerBuild.dockerfile |
Der Standard-Dockerfile-Pfad befindet sich im Stammverzeichnis des Arbeitsbereichsordners. |
dockerBuild.tag |
Der Basisname des Stamm-Arbeitsbereichsordners. |
dockerBuild.pull |
Standardmäßig true, um neue Basisimages vor dem Builden herunterzuladen. |
.NET (docker-build)
Minimale Konfiguration mit Standardwerten
Beim Erstellen eines auf .NET basierenden Images können Sie die Eigenschaft platform weglassen und stattdessen das Objekt netCore festlegen (platform wird implizit auf netcore gesetzt, wenn das Objekt netCore vorhanden ist). Beachten Sie, dass appProject eine erforderliche Eigenschaft ist
{
"version": "2.0.0",
"tasks": [
{
"label": "Build Node Image",
"type": "docker-build",
"netCore": {
"appProject": "${workspaceFolder}/project.csproj"
}
}
]
}
Plattformstandardwerte
Für auf .NET basierende Images leitet der Task docker-build die folgenden Optionen ab
| Eigenschaft | Abgeleiteter Wert |
|---|---|
dockerBuild.context |
Der Stamm-Arbeitsbereichsordner. |
dockerBuild.dockerfile |
Die Datei Dockerfile im Stamm-Arbeitsbereichsordner. |
dockerBuild.tag |
Der Basisname des Stamm-Arbeitsbereichsordners. |
dockerBuild.pull |
Standardmäßig true, um neue Basisimages vor dem Builden herunterzuladen. |
Build-Task-Referenz
Hier sind alle Eigenschaften aufgeführt, die zur Konfiguration des Tasks docker-build verfügbar sind. Alle Eigenschaften sind optional, sofern nicht anders angegeben.
| Eigenschaft | Beschreibung |
|---|---|
dockerBuild |
Optionen zur Steuerung des ausgeführten Befehls docker build (siehe unten).Erforderlich, es sei denn, platform ist gesetzt. |
platform |
Bestimmt die Plattform: .NET (netcore) oder Node.js (node) und Standardeinstellungen für den Befehl docker build. |
node |
Bestimmt plattformspezifische Optionen für Node.js-Projekte (siehe unten). |
python |
Für Python gibt es keine Objekteigenschaften im Task docker-build. |
netCore |
Bestimmt plattformspezifische Optionen für .NET-Projekte (siehe unten). |
Eigenschaften des dockerBuild-Objekts
| Eigenschaft | Beschreibung | docker build CLI-Entsprechung |
|---|---|---|
context |
Der Pfad zum Build-Kontext. Erforderlich, es sei denn, er wird von der Plattform abgeleitet. |
PATH |
dockerfile |
Der Pfad zur Dockerfile. Erforderlich, es sei denn, er wird von der Plattform abgeleitet. |
-f oder --file |
tag |
Das für das Image angewendete Tag. Erforderlich, es sei denn, er wird von der Plattform abgeleitet. |
-t oder --tag |
buildArgs |
Build-Argumente, die auf der Befehlszeile angewendet werden. Dies ist eine Liste von Schlüssel-Wert-Paaren. | --build-arg |
labels |
Dem Image hinzugefügte Labels. Dies ist eine Liste von Schlüssel-Wert-Paaren (ein JSON-Objekt). Zusätzlich zu den hier angegebenen Labels wird dem Image ein Label com.microsoft.created-by mit dem Wert visual-studio-code hinzugefügt. Dieses Verhalten kann durch Setzen der Eigenschaft includeDefaults des Objekts labels auf false deaktiviert werden. |
--label |
target |
Das Ziel in der Dockerfile, zu dem gebaut werden soll. | --target |
pull |
Ob neue Basisimages vor dem Builden heruntergeladen werden sollen. | --pull |
customOptions |
Zusätzliche Parameter, die vor dem Kontextargument hinzugefügt werden sollen. Es wird kein Versuch unternommen, Konflikte mit anderen Optionen aufzulösen oder diese Option zu validieren. | (any) |
Eigenschaften des Node-Objekts (Task docker-build)
| Eigenschaft | Beschreibung | Standard |
|---|---|---|
package |
Der Pfad zur Datei package.json, die mit der Dockerfile und dem Task docker-build verknüpft ist. |
Die Datei package.json im Stamm-Arbeitsbereichsordner. |
Eigenschaften des netCore-Objekts (Task docker-build)
| Eigenschaft | Beschreibung |
|---|---|
appProject |
Die .NET-Projektdatei (.csproj, .fsproj, etc.), die mit der Dockerfile und dem Task docker-build verknüpft ist.Immer erforderlich. |
Docker Run-Task
Der Task docker-run in tasks.json erstellt und startet einen Container mithilfe der Docker-Befehlszeile (CLI). Der Task kann eigenständig oder als Teil einer Taskkette zum Debuggen einer Anwendung in einem Container verwendet werden.
Die wichtigsten Konfigurationseinstellungen für den Task docker-run sind dockerRun und platform
- Das Objekt
dockerRungibt Parameter für den Docker-Run-Befehl an. Die von diesem Objekt angegebenen Werte werden direkt auf die Docker-Run-CLI-Aufrufung angewendet. - Die Eigenschaft
platformist ein Hinweis, der beeinflusst, wie der Taskdocker-rundie Docker-Run-Standardwerte bestimmt.
Siehe Eigenschaftenreferenz für die vollständige Liste aller Task-Eigenschaften.
Docker Run-Plattformunterstützung
Während der Task docker-run zum Ausführen beliebiger Docker-Images verwendet werden kann, verfügt die Erweiterung über explizite Unterstützung (und vereinfachte Konfiguration) für Node.js, Python und .NET.
Node.js (docker-run)
Minimale Konfiguration mit Standardwerten
Ein auf Node.js basierendes Image ohne spezifische Plattformoptionen kann einfach die Eigenschaft platform auf node setzen.
{
"version": "2.0.0",
"tasks": [
{
"label": "Run Node Image",
"node": "docker-run",
"platform": "node"
}
]
}
Plattformstandardwerte
Für auf Node.js basierende Images leitet der Task docker-run die folgenden Optionen ab
| Eigenschaft | Abgeleiteter Wert |
|---|---|
dockerRun.command |
Generiert aus dem npm start-Skript in package.json (falls vorhanden), andernfalls generiert aus der main-Eigenschaft in package.json. |
dockerRun.containerName |
Abgeleitet vom Anwendungs-Paketnamen. |
dockerRun.image |
Das Tag eines abhängigen docker-build-Tasks (falls vorhanden) oder abgeleitet vom Anwendungs-Paketnamen, der selbst von der name-Eigenschaft in package.json oder dem Basisnamen des Ordners, in dem er sich befindet, abgeleitet wird. |
Python (docker-run)
Beim Erstellen eines auf Python basierenden Images können Sie die Eigenschaft platform weglassen und stattdessen das Objekt python festlegen (platform wird implizit auf python gesetzt, wenn das Objekt python vorhanden ist)
Minimale Konfiguration für Django-Apps
{
"type": "docker-run",
"label": "docker-run: debug",
"dependsOn": ["docker-build"],
"python": {
"args": ["runserver", "0.0.0.0:8000", "--nothreading", "--noreload"],
"file": "path_to/manage.py"
}
}
Minimale Konfiguration für Flask-Apps
{
"type": "docker-run",
"label": "docker-run: debug",
"dependsOn": ["docker-build"],
"dockerRun": {
"env": {
"FLASK_APP": "path_to/flask_entry_point.py"
}
},
"python": {
"args": ["run", "--no-debugger", "--no-reload", "--host", "0.0.0.0", "--port", "5000"],
"module": "flask"
}
}
Minimale Konfiguration für allgemeine Apps
{
"type": "docker-run",
"label": "docker-run: debug",
"dependsOn": ["docker-build"],
"python": {
"file": "path_to/app_entry_point.py"
}
}
Plattformstandardwerte
Für auf Python basierende Images leitet der Task docker-run die folgenden Optionen ab
| Eigenschaft | Abgeleiteter Wert |
|---|---|
dockerRun.command |
Generiert durch das Python-Objekt und wird vom Python Debugger aufgerufen. |
dockerRun.containerName |
Abgeleitet vom Basisnamen des Stamm-Arbeitsbereichsordners. |
dockerRun.image |
Das Tag eines abhängigen Docker-Build-Tasks (falls vorhanden) oder abgeleitet vom Basisnamen des Stamm-Arbeitsbereichsordners. |
.NET (docker-run)
Minimale Konfiguration mit Standardwerten
Beim Erstellen eines auf .NET basierenden Images können Sie die Eigenschaft platform weglassen und stattdessen das Objekt netCore festlegen (platform wird implizit auf netcore gesetzt, wenn das Objekt netCore vorhanden ist). Beachten Sie, dass appProject eine erforderliche Eigenschaft ist
{
"version": "2.0.0",
"tasks": [
{
"label": "Run .NET Core Image",
"type": "docker-run",
"netCore": {
"appProject": "${workspaceFolder}/project.csproj"
}
}
]
}
Plattformstandardwerte
Für auf .NET basierende Images leitet der Task docker-run die folgenden Optionen ab
| Eigenschaft | Abgeleiteter Wert |
|---|---|
dockerRun.containerName |
Abgeleitet vom Basisnamen des Stamm-Arbeitsbereichsordners. |
dockerRun.env |
Fügt die folgenden Umgebungsvariablen hinzu, wie erforderlich: ASPNETCORE_ENVIRONMENT, ASPNETCORE_URLS und DOTNET_USE_POLLING_FILE_WATCHER. |
dockerRun.image |
Das Tag eines abhängigen docker-build-Tasks (falls vorhanden) oder abgeleitet vom Basisnamen des Stamm-Arbeitsbereichsordners. |
dockerRun.os |
Linux |
dockerRun.volumes |
Fügt die folgenden Volumes hinzu, wie erforderlich: lokaler Anwendungsordner, Quellordner, Debuggerordner, NuGet-Paketordner und NuGet-Fallbackordner. |
Run-Task-Referenz
Hier sind alle Eigenschaften aufgeführt, die zur Konfiguration des Tasks docker-run verfügbar sind. Alle Eigenschaften sind optional, sofern nicht anders angegeben.
| Eigenschaft | Beschreibung |
|---|---|
dockerRun |
Optionen zur Steuerung des ausgeführten Befehls docker run (siehe unten).Erforderlich, es sei denn, platform ist gesetzt. |
platform |
Bestimmt die Plattform: .NET (netcore) oder Node.js (node) und Standardeinstellungen für den Befehl docker run. |
node |
Für Node.js-Projekte steuert dies verschiedene Optionen (siehe unten). |
python |
Für Python-Projekte steuert dies verschiedene Optionen (siehe unten). |
netCore |
Für .NET-Projekte steuert dies verschiedene Optionen (siehe unten). |
Eigenschaften des dockerRun-Objekts
| Eigenschaft | Beschreibung | CLI-Entsprechung |
|---|---|---|
image |
Der Name (Tag) des auszuführenden Images. Erforderlich, es sei denn, er wird von der Plattform abgeleitet. |
IMAGE |
command |
Der auszuführende Befehl beim Starten des Containers. Erforderlich, es sei denn, er wird von der Plattform abgeleitet. |
COMMAND [ARG...] |
containerName |
Der Name, der dem gestarteten Container gegeben wird. Erforderlich, es sei denn, er wird von der Plattform abgeleitet. |
--name |
env |
Im Container gesetzte Umgebungsvariablen. Dies ist eine Liste von Schlüssel-Wert-Paaren. | -e oder --env |
envFiles |
Dies ist eine Liste von .env-Dateien. |
--env-file |
labels |
Dem gestarteten Container gegebene Labels. Dies ist eine Liste von Schlüssel-Wert-Paaren. | --label |
network |
Der Name des Netzwerks, mit dem der Container verbunden wird. | --network |
networkAlias |
Der netzwerkbezogene Alias für den gestarteten Container. | --network-alias |
os |
Standard ist Linux, die andere Option ist Windows. Das verwendete Containerbetriebssystem. |
N/A |
ports |
Die zu veröffentlichenden (zu mappenden) Ports vom Container zum Host. Dies ist eine Liste von Objekten (siehe unten). | -p oder --publish |
portsPublishAll |
Ob alle vom Docker-Image exponierten Ports veröffentlicht werden sollen. Standard ist true, wenn keine Ports explizit veröffentlicht werden. |
-P |
extraHosts |
Die Hosts, die für die DNS-Auflösung dem Container hinzugefügt werden sollen. Dies ist eine Liste von Objekten (siehe unten). | --add-host |
volumes |
Die Volumes, die in den gestarteten Container gemappt werden sollen. Dies ist eine Liste von Objekten (siehe unten). | -v oder --volume |
remove |
Ob der Container nach dem Stoppen entfernt werden soll. | --rm |
customOptions |
Zusätzliche Parameter, die vor dem Image-Argument hinzugefügt werden sollen. Es wird kein Versuch unternommen, Konflikte mit anderen Optionen aufzulösen oder diese Option zu validieren. | (any) |
Eigenschaften des Ports-Objekts
| Eigenschaft | Beschreibung | Standard |
|---|---|---|
containerPort |
Die Portnummer, die auf dem Container gebunden ist. Erforderlich. |
|
hostPort |
Die Portnummer, die auf dem Host gebunden ist. | (zufällig von Docker ausgewählt) |
protocol |
Das Protokoll für die Bindung (tcp oder udp). |
tcp |
Eigenschaften des extraHosts-Objekts
| Eigenschaft | Beschreibung |
|---|---|
hostname |
Der Hostname für die DNS-Auflösung. Erforderlich. |
ip |
Die IP-Adresse, die dem obigen Hostnamen zugeordnet ist. Erforderlich. |
Eigenschaften des Volumes-Objekts
| Eigenschaft | Beschreibung | Standard |
|---|---|---|
localPath |
Der Pfad auf dem lokalen Computer, der gemappt wird. Erforderlich. |
|
containerPath |
Der Pfad im Container, dem der lokale Pfad zugeordnet wird. Erforderlich. |
|
permissions |
Berechtigungen, die der Container für den gemappten Pfad hat. Kann ro (schreibgeschützt) oder rw (lese-/schreibgeschützt) sein. |
Containerabhängig. |
Eigenschaften des Node-Objekts (Task docker-run)
| Eigenschaft | Beschreibung | Standard |
|---|---|---|
package |
Der Pfad zur Datei package.json, die mit dem Task docker-run verknüpft ist. |
Die Datei package.json im Stamm-Arbeitsbereichsordner. |
enableDebugging |
Ob das Debugging innerhalb des Containers aktiviert werden soll. | false |
inspectMode |
Definiert die anfängliche Interaktion zwischen der Anwendung und dem Debugger (default oder break).Der Wert default ermöglicht die Ausführung der Anwendung, bis der Debugger angehängt ist.Der Wert break verhindert die Ausführung der Anwendung, bis der Debugger angehängt ist. |
default |
inspectPort |
Der Port, auf dem das Debugging erfolgen soll. | 9229 |
Eigenschaften des Python-Objekts (Task docker-run)
| Eigenschaft | Beschreibung | Standard |
|---|---|---|
args |
Argumente, die an die Python-App übergeben werden. | Plattformabhängig. Standardwerte des oben gezeigten Gerüsts angezeigt |
debugPort |
Der Port, auf dem der Debugger lauschen wird. | 5678 |
wait |
Ob auf das Anhängen des Debuggers gewartet werden soll. | true |
module |
Das auszuführende Python-Modul (nur Modul oder Datei sollte ausgewählt werden). | |
file |
Die auszuführende Python-Datei (nur Modul oder Datei sollte ausgewählt werden). |
Eigenschaften des netCore-Objekts (Task docker-run)
| Eigenschaft | Beschreibung |
|---|---|
appProject |
Die .NET-Projektdatei (.csproj, .fsproj, etc.), die mit dem Task docker-run verknüpft ist.Erforderlich. |
configureSsl |
Ob ASP.NET Core SSL-Zertifikate und andere Einstellungen konfiguriert werden sollen, um SSL auf dem Dienst im Container zu aktivieren. |
enableDebugging |
Ob der gestartete Container für das Debugging aktiviert werden soll. Dies leitet zusätzliche Volume-Mappings und andere für das Debugging notwendige Optionen ab. |
Docker Compose-Task
Der Task docker-compose in tasks.json erstellt und startet Container mithilfe der Docker Compose-Befehlszeile (CLI). Der Task kann eigenständig oder als Teil einer Taskkette zum Debuggen einer Anwendung in einem Container verwendet werden.
Die wichtigste Konfigurationseinstellung für den Task docker-compose ist dockerCompose
- Das Objekt
dockerComposegibt Parameter für den Docker Compose-Befehl an. Die von diesem Objekt angegebenen Werte werden direkt auf die Docker Compose-CLI-Aufrufung angewendet.
Siehe Eigenschaftenreferenz für die vollständige Liste aller Task-Eigenschaften.
Beispielkonfiguration
{
"version": "2.0.0",
"tasks": [
{
"label": "Run docker-compose up",
"type": "docker-compose",
"dockerCompose": {
"up": {
"detached": true,
"build": true,
"services": ["myservice"]
},
"files": [
"${workspaceFolder}/docker-compose.yml",
"${workspaceFolder}/docker-compose.debug.yml"
]
}
}
]
}
Compose-Task-Referenz
Hier sind alle Eigenschaften aufgeführt, die zur Konfiguration des Tasks docker-compose verfügbar sind. Alle Eigenschaften sind optional, sofern nicht anders angegeben.
| Eigenschaft | Beschreibung |
|---|---|
dockerCompose |
Optionen zur Steuerung des ausgeführten Befehls docker-compose (siehe unten).Erforderlich. |
Eigenschaften des dockerCompose-Objekts
| Eigenschaft | Beschreibung | CLI-Entsprechung |
|---|---|---|
up |
Führt einen Befehl docker-compose up aus.Entweder dieser oder down muss angegeben werden, aber nicht beide. |
docker-compose up |
down |
Führt einen Befehl docker-compose down aus.Entweder dieser oder up muss angegeben werden, aber nicht beide. |
docker-compose down |
files |
Die Liste der Docker Compose YAML-Dateien, die im Befehl docker-compose verwendet werden sollen. Wenn nicht angegeben, sucht die Docker Compose CLI nach docker-compose.yml und docker-compose.override.yml. |
-f <file> |
envFile |
Datei mit Umgebungsvariablen, die gelesen und auf die Container angewendet werden. | --env-file <file> |
projectName |
Alternativer Projektname, der bei der Benennung und Kennzeichnung von Docker-Objekten verwendet wird. Bei Verwendung eines alternativen Projektnamens beim Compose-Up muss derselbe Projektname beim Compose-Down angegeben werden. | --project-name <name> |
Eigenschaften des up-Objekts
| Eigenschaft | Beschreibung | CLI-Entsprechung | Standard |
|---|---|---|---|
detached |
Ob im getrennten Modus ausgeführt werden soll. | -d |
true |
build |
Ob vor dem Ausführen gebaut werden soll. | --build |
true |
scale |
Anzahl der auszuführenden Instanzen jedes Dienstes. Dies ist eine Liste von Schlüssel-Wert-Paaren. | --scale SERVICE=NUM |
|
services |
Eine Teilmenge der zu startenden Dienste. Kann nicht mit profiles kombiniert werden. |
[SERVICE...] |
(alle) |
profiles |
Eine Teilmenge der zu startenden Profile. Kann nicht mit services kombiniert werden. |
--profile <profile> |
(alle) |
customOptions |
Zusätzliche Parameter, die nach dem Argument up hinzugefügt werden sollen. Es wird kein Versuch unternommen, Konflikte mit anderen Optionen aufzulösen oder diese Option zu validieren. |
(any) |
Eigenschaften des down-Objekts
| Eigenschaft | Beschreibung | CLI-Entsprechung | Standard |
|---|---|---|---|
removeImages |
Ob Images entfernt werden sollen und welche. all entfernt alle von Diensten verwendeten Images, local entfernt nur Images ohne benutzerdefiniertes Tag. Wenn dies nicht gesetzt ist, werden keine Images entfernt. |
--rmi |
|
removeVolumes |
Ob benannte Volumes entfernt werden sollen. | -v |
false |
customOptions |
Zusätzliche Parameter, die nach dem Argument down hinzugefügt werden sollen. Es wird kein Versuch unternommen, Konflikte mit anderen Optionen aufzulösen oder diese Option zu validieren. |
(any) |
Befehlseinstellungen
Die Container Tools-Erweiterung führt eine Reihe von Docker-CLI-Befehlen aus, wenn Sie verschiedene Operationen durchführen, wie z. B. Images erstellen, Container starten, an Container anhängen und Containerprotokolle anzeigen. Einige dieser Befehle haben eine große Anzahl optionaler Argumente, die oft in sehr spezifischen Szenarien verwendet werden. Als Alternative zu den oben genannten Visual Studio Code-Tasks können mehrere Befehle angepasst werden, wenn keine Tasks verwendet werden.
Zum Beispiel ermöglichen die Token ${serviceList} und ${profileList} im Befehl Compose Up das einfache Starten einer Teilmenge der Dienste in Ihrer(n) Docker Compose YAML-Datei(en).
Für jeden dieser anpassbaren Docker-Befehle ist eine Konfigurationseinstellung verfügbar, um die Vorlage für die Ausführung festzulegen. Alternativ können Sie mehrere Vorlagen definieren, optional mit einem regulären Ausdruck, der, wenn er übereinstimmt, den Kontext angibt, in dem eine Vorlage verwendet werden soll. Die Vorlagen unterstützen einige Token ähnlich wie launch.json und tasks.json, z. B. ${workspaceFolder}.
Schema der Einstellungs-JSON
Sie haben zwei Optionen zur Konfiguration jeder der Vorlagen (unten aufgeführt). Die erste Option ist eine einzelne Vorlage, die das Standardverhalten überschreibt.
{
"containers.commands.build": "docker build --rm -f \"${dockerfile}\" -t ${tag} \"${context}\""
}
Die zweite Option sind mehrere Vorlagen, die basierend auf dem regulären Ausdruck match sowie Benutzereingaben ausgewählt werden.
Zum Beispiel werden im folgenden Beispiel drei Vorlagen gezeigt.
{
"containers.commands.build": [
{
"label": "Default build command",
"template": "docker build --rm -f \"${dockerfile}\" -t ${tag} \"${context}\""
},
{
"label": "Alpine-specific build command",
"template": "docker build -p 1234:1234 -f \"${dockerfile}\" -t ${tag} \"${context}\"",
"match": "alpine"
}
]
}
Auswahlverhalten
Die ausgewählte Befehlsvorlage wird basierend auf den folgenden Regeln ausgewählt.
- Wenn keine Einstellung konfiguriert ist, wird die Standard-Befehlsvorlage gewählt.
- Wenn nur eine Vorlage konfiguriert ist (das erste Beispiel oben), wird diese Vorlage gewählt.
- Wenn mehrere Vorlagen konfiguriert sind.
- Eingeschränkte Vorlagen werden geprüft. Eine eingeschränkte Vorlage hat ein
match. Der reguläre Ausdruckmatchwird mit kontextbezogenen Hinweisen verglichen – z. B. Image-Name, Container-Name usw. - Wenn mehrere eingeschränkte Vorlagen zutreffen, wird der Benutzer zur Auswahl aufgefordert. Wenn nur eine zutrifft, wird der Benutzer nicht aufgefordert.
- Wenn keine zutreffenden eingeschränkten Vorlagen vorhanden sind, werden nicht eingeschränkte Vorlagen geprüft. Eine nicht eingeschränkte Vorlage hat kein
matchund ist daher immer zutreffend. - Wenn mehrere nicht eingeschränkte Vorlagen zutreffen, wird der Benutzer zur Auswahl aufgefordert. Wenn nur eine zutrifft, wird der Benutzer nicht aufgefordert.
- Eingeschränkte Vorlagen werden geprüft. Eine eingeschränkte Vorlage hat ein
Docker Build
| Konfigurationseinstellung | Standardwert |
|---|---|
docker.commands.build |
${containerCommand} build --rm -f "${dockerfile}" -t ${tag} "${context}" |
Unterstützte Token
| Token | Beschreibung |
|---|---|
${containerCommand} |
Der CLI-Befehl / die ausführbare Datei, die zum Ausführen von Containerbefehlen verwendet wird. |
${dockerfile} |
Der Arbeitsbereichs-relative Pfad der ausgewählten Dockerfile. |
${tag} |
Der vom Benutzer bei Aufruf des Build-Befehls eingegebene/bestätigte Wert. Wenn zuvor gebaut, wird standardmäßig der zuvor eingegebene Wert für diese Dockerfile verwendet. |
${context} |
Wenn gesetzt, der Wert der Konfigurationseinstellung containers.imageBuildContextPath. Andernfalls der Arbeitsbereichs-relative Ordner, in dem sich die Dockerfile befindet. |
Hinweis: Wenn die Einstellung
containers.commands.builddas Token${tag}nicht enthält, wird der Benutzer nicht aufgefordert, ein Tag einzugeben/zu bestätigen.
Hinweis: Der reguläre Ausdruck
matchwird mit dem ausgewählten Dockerfile-Namen und dem Namen des Arbeitsbereichsordners verglichen.
Docker Run
| Konfigurationseinstellung | Standardwert |
|---|---|
containers.commands.run |
${containerCommand} run --rm -d ${exposedPorts} ${tag} |
containers.commands.runInteractive |
${containerCommand} run --rm -it ${exposedPorts} ${tag} |
Unterstützte Token
| Token | Beschreibung |
|---|---|
${containerCommand} |
Der CLI-Befehl / die ausführbare Datei, die zum Ausführen von Containerbefehlen verwendet wird. |
${exposedPorts} |
Generiert aus der Liste der im Image exponierten Ports (letztendlich aus der Dockerfile), wobei jeder exponierte Port demselben Port auf dem lokalen Computer zugeordnet wird. Zum Beispiel würde "EXPOSE 5000 5001" "-p 5000:5000 -p 5001:5001" generieren. |
${tag} |
Das vollständige Tag des ausgewählten Images. |
Hinweis: Der reguläre Ausdruck
matchwird mit dem vollständigen Tag des ausgewählten Images verglichen.
Container Attach
| Konfigurationseinstellung | Standardwert |
|---|---|
containers.commands.attach |
${containerCommand} exec -it ${containerId} ${shellCommand} |
Unterstützte Token
| Token | Beschreibung |
|---|---|
${containerCommand} |
Der CLI-Befehl / die ausführbare Datei, die zum Ausführen von Containerbefehlen verwendet wird. |
${containerId} |
Die ID des Containers, an den angehängt werden soll. |
${shellCommand} |
Wenn bash im Container vorhanden ist, wird es hier ersetzt, andernfalls sh. In Windows-Containern wird immer cmd verwendet. |
Hinweis: Der reguläre Ausdruck
matchwird mit dem Containernamen und dem vollständigen Tag des Container-Images verglichen.
Container Logs
| Konfigurationseinstellung | Standardwert |
|---|---|
containers.commands.logs |
${containerCommand} logs -f ${containerId} |
Unterstützte Token
| Token | Beschreibung |
|---|---|
${containerCommand} |
Der CLI-Befehl / die ausführbare Datei, die zum Ausführen von Containerbefehlen verwendet wird. |
${containerId} |
Die ID des Containers, dessen Protokolle angezeigt werden sollen. |
Hinweis: Der reguläre Ausdruck
matchwird mit dem Containernamen und dem vollständigen Tag des Container-Images verglichen.
Docker Compose Up
| Konfigurationseinstellung | Standardwert |
|---|---|
containers.commands.composeUp |
${composeCommand} ${configurationFile} up ${detached} ${build} |
Unterstützte Token
| Token | Beschreibung |
|---|---|
${configurationFile} |
Gesetzt auf -f plus den Arbeitsbereichs-relativen Pfad zur ausgewählten Docker Compose YAML-Datei. |
${detached} |
Gesetzt auf -d, wenn die Konfigurationseinstellung containers.composeDetached auf true gesetzt ist. Andernfalls gesetzt auf "". |
${build} |
Gesetzt auf --build, wenn die Konfigurationseinstellung containers.composeBuild auf true gesetzt ist. Andernfalls gesetzt auf "". |
${serviceList} |
Wenn angegeben, fordert zur Auswahl einer Teilmenge der zu startenden Dienste auf, wenn der Befehl ausgeführt wird. |
${profileList} |
Wenn angegeben und die Docker Compose YAML-Datei Profile enthält, fordert zur Auswahl einer Teilmenge der zu startenden Profile auf, wenn der Befehl ausgeführt wird. |
${composeCommand} |
Gesetzt auf den Wert der Einstellung containers.composeCommand, falls diese gesetzt ist, andernfalls versucht die Erweiterung, den zu verwendenden Befehl automatisch zu ermitteln (docker compose oder docker-compose). |
Docker Compose Down
| Konfigurationseinstellung | Standardwert |
|---|---|
containers.commands.composeDown |
${composeCommand} ${configurationFile} down |
Unterstützte Token
| Token | Beschreibung |
|---|---|
${configurationFile} |
Gesetzt auf -f plus den Arbeitsbereichs-relativen Pfad zur ausgewählten Docker Compose YAML-Datei. |
${composeCommand} |
Gesetzt auf den Wert der Einstellung containers.composeCommand, falls diese gesetzt ist, andernfalls versucht die Erweiterung, den zu verwendenden Befehl automatisch zu ermitteln (docker compose oder docker-compose). |
Zusätzlich unterstützte Token
Zusätzlich zu den Befehlsspezifischen unterstützten Token werden die folgenden Token in allen Befehlsvorlagen unterstützt.
| Token | Beschreibung |
|---|---|
${workspaceFolder} |
Der Pfad des ausgewählten Arbeitsbereichsordners. |
${config:some.setting.identifier} |
Der Wert einer beliebigen Konfigurationseinstellung, sofern es sich um einen String, eine Zahl oder einen booleschen Wert handelt. Diese Einstellungsidentifikatoren können beliebig definiert werden und müssen weder zu Visual Studio Code noch zu einer Erweiterung gehören. |
${env:Name} |
Der Wert einer Umgebungsvariablen. |
${command:commandID} |
Der Rückgabewert eines Befehls. |