Starten einer Teilmenge der Compose-Dienste
Wenn Sie über eine Anwendung verfügen, die aus mehreren Diensten besteht und Docker Compose verwendet, können Sie konfigurieren, welche Dienste ausgeführt und gedebuggt werden. Dazu erstellen Sie ein Startprofil in den Docker Compose-Starteinstellungen oder bearbeiten ein bereits vorhandenes Profil. Mit Startprofilen können Sie nur die Dienste dynamisch ausführen, die für Ihr aktuelles Szenario von Bedeutung sind. Sie können Startprofile erstellen und auswählen, um Ihre Debuggingfunktionen anzupassen und bestimmte Startaktionen wie Browser Launch URL
festzulegen. Sie haben auch die Möglichkeit, entweder jeden Dienst einzeln auszuwählen oder ein Docker Compose-Profil zu wählen, das auch ihre Compose-Datei untersucht, um die Gruppe der auszuführenden Dienste zu ermitteln.
Informationen zu Docker Compose-Profilen finden Sie unter Verwenden von Profilen mit Compose.
Voraussetzungen
- Visual Studio 2019, Version 16.10 oder höher
- Eine .NET-Lösung mit Containerorchestrierung mit Docker Compose
- Visual Studio 2022 oder Visual Studio 2019 (Version 16.10 oder höher)
- Eine .NET-Lösung mit Containerorchestrierung mit Docker Compose
Verwalten von Starteinstellungen
Sehen Sie sich das folgende Docker Compose-Projekt an, bei dem docker-compose.yml fünf Dienste und drei Compose-Profile (web, web1 und web2) umfasst.
version: '3.9'
services:
webapplication1:
image: ${DOCKER_REGISTRY-}webapplication1
profiles: [web, web1]
build:
context: .
dockerfile: WebApplication1/Dockerfile
webapplication2:
image: ${DOCKER_REGISTRY-}webapplication2
profiles: [web, web2]
build:
context: .
dockerfile: WebApplication2/Dockerfile
webapplication3:
image: ${DOCKER_REGISTRY-}webapplication3
profiles: [web]
build:
context: .
dockerfile: WebApplication3/Dockerfile
external1:
image: redis
external2:
image: redis
Es gibt mehrere Möglichkeiten, das Dialogfeld für Docker Compose-Starteinstellungen zu öffnen:
Wählen Sie in Visual Studio Debuggen>Docker Compose-Starteinstellungen verwalten aus:
Klicken Sie mit der rechten Maustaste auf das Visual Studio-Projekt
docker-compose
, und wählen Sie Docker Compose-Starteinstellungen verwalten ausVerwenden Sie den Schnellstart (STRG+Q), und suchen Sie nach Docker Compose, um diesen Befehl zu finden.
Im folgenden Beispiel ist das Compose-Profil web1
ausgewählt, das die Liste Dienste auf lediglich drei der fünf in diesem Profil enthaltenen Dienste filtert:
Hinweis
Der Abschnitt mit Docker Compose-Profilen wird nur angezeigt, wenn in Ihren Docker-Compose.yml-Dateien Profile definiert sind.
Im nächsten Beispiel wird gezeigt, wie Sie einzelne Dienste auswählen, anstatt in einem Compose-Profil nach den Diensten zu filtern. Hier sehen Sie, wie das Dialogfeld aussieht, wenn Sie ein neues Startprofil mit dem Namen test2
erstellen, mit dem nur zwei der fünf Dienste gestartet werden: webapplication1
mit Debuggen und webapplication2
ohne Debuggen. Mit diesem Startprofil wird außerdem beim Anwendungsstart ein Browser gestartet und die Startseite von webapplication1
geöffnet.
Diese Informationen werden wie nachfolgend gezeigt in launchSettings.json gespeichert.
{
"profiles": {
"test2": {
"commandName": "DockerCompose",
"composeLaunchServiceName": "webapplication1",
"serviceActions": {
"external1": "DoNotStart",
"external2": "DoNotStart",
"webapplication1": "StartDebugging",
"webapplication2": "StartWithoutDebugging",
"webapplication3": "DoNotStart"
},
"composeLaunchAction": "LaunchBrowser",
"commandVersion": "1.0",
"composeLaunchUrl": "{Scheme}://localhost:{ServicePort}"
}
}
}
Erstellen eines Startprofils, das ein Docker Compose-Profil verwendet
Sie können das Startverhalten auch weiter anpassen, indem Sie Visual Studio-Startprofile erstellen, die Compose-Profile nutzen.
Wenn Sie ein weiteres Profil erstellen möchten, bei dem das Compose-Profil genutzt wird, wählen Sie Docker Compose-Profile verwenden und dann web1
aus. Das Startprofil enthält nun drei Dienste: webapplication1
(der zu den beiden Compose-Profilen web
und web1
gehört), external1
und external2
. Standardmäßig weisen die Dienste ohne Quellcode wie external1
und external2
die Standardaktion Ohne Debuggen starten auf. .NET-Anwendungen mit Quellcode weisen standardmäßig die Aktion Debuggen starten auf.
Wichtig
Wenn ein Dienst kein Compose-Profil angibt, wird er implizit in alle Compose-Profile eingeschlossen.
Diese Informationen werden wie im folgenden Code gespeichert. Die Konfiguration für den Dienst und die zugehörige Standardaktion werden nur gespeichert, wenn Sie die Standardaktion ändern.
{
"profiles": {
"test1": {
"commandName": "DockerCompose",
"composeProfile": {
"includes": [
"web1"
]
},
"commandVersion": "1.0"
}
}
}
Sie können auch die Aktion von „webapplication1“ in Ohne Debuggen starten ändern. Die Einstellungen in launchSettings.json entsprechen dann dem folgenden Code:
{
"profiles": {
"test1": {
"commandName": "DockerCompose",
"composeProfile": {
"includes": [
"web1"
],
"serviceActions": {
"webapplication1": "StartWithoutDebugging"
}
},
"commandVersion": "1.0"
}
}
}
Eigenschaften
Es folgt eine Beschreibung der einzelnen Eigenschaften in launchSettings.json:
Eigenschaft | BESCHREIBUNG |
---|---|
commandName | Der Name des Befehls. Der Standardwert ist „DockerCompose“. |
commandVersion | Die Versionsnummer, die zum Verwalten des Schemas des DockerCompose-Startprofils verwendet wird. |
composeProfile | Die übergeordnete Eigenschaft, die die Startprofildefinition definiert. Die untergeordneten Eigenschaften sind includes und serviceActions . |
composeProfile - includes | Die Liste der Compose-Profilnamen, aus denen ein Startprofil besteht. |
composeProfile - serviceActions | Listet die ausgewählten Compose-Profile, die Dienste und die Startaktion jedes Diensts auf. |
serviceActions | Listet die ausgewählten Dienste und die Startaktion auf. |
composeLaunchAction | Legt die Startaktion fest, die beim Drücken von F5 oder STRG+F5 ausgeführt werden soll. Zulässige Werte sind „None“, „LaunchBrowser“ und „LaunchWCFTestClient“. |
composeLaunchUrl | Die URL, die beim Start des Browsers verwendet werden soll. Gültige Ersetzungstoken sind „{ServiceIPAddress}“, „{ServicePort}“ und „{Scheme}“. Beispiel: {Scheme}://{ServiceIPAddress}:{ServicePort}. |
composeLaunchServiceName | Gibt den Dienst an, der zum Ersetzen der Token in composeLaunchUrl verwendet wird. |