Lancer un sous-ensemble de services Compose
Si vous disposez d’une application composée de plusieurs services et utilise Docker Compose, vous pouvez configurer les services qui s’exécutent et déboguent en créant ou en modifiant un profil de lancement existant dans les paramètres de lancement de Docker Compose. Les profils de lancement vous permettent d’exécuter dynamiquement uniquement les services qui comptent pour votre scénario actuel. Vous pouvez créer et sélectionner des profils de lancement pour personnaliser votre expérience de débogage et définir des actions de lancement spécifiques telles que Browser Launch URL
. Vous avez également la possibilité de choisir chaque service individuellement ou en choisissant un profil Docker Compose, qui examine également votre fichier Compose pour déterminer le groupe de services à exécuter.
Pour plus d’informations sur les profils Docker Compose, consultez Utilisation de profils avec Compose.
Conditions préalables
- Visual Studio 2019 version 16.10 ou ultérieure
- Une solution .NET avec l’orchestration de conteneurs avec Docker Compose
- Visual Studio 2022 ou Visual Studio 2019 version 16.10 ou ultérieure
- Une solution .NET avec orchestration de conteneurs utilisant Docker Compose
Gérer les paramètres de lancement
Considérez le projet Docker Compose suivant dans lequel le docker-compose.yml a cinq services et trois profils Compose (web, web1 et web2).
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
Il existe quelques options pour ouvrir la boîte de dialogue paramètres de lancement de Docker Compose :
Dans Visual Studio, choisissez Déboguer>Gérer les paramètres de lancement de Docker Compose :
Capture d’écran
Capture d’écran
Cliquez avec le bouton droit sur le projet Visual Studio
docker-compose
, puis sélectionnez Gérer les paramètres de lancement de Docker ComposeCapture d’écran
Capture d’écran
Utilisez le lancement rapide (Ctrl+Q) et recherchez Docker Compose pour rechercher la même commande.
Dans l’exemple ci-dessous, le profil web1
Compose est sélectionné, ce qui filtre la liste Services pour ne montrer que trois des cinq services inclus dans ce profil :
Remarque
La section Profils Docker Compose s’affiche uniquement s’il existe des profils définis dans vos fichiers docker-compose.yml.
L’exemple suivant illustre la sélection entre des services individuels au lieu de filtrer les services dans un profil Compose. Ici, nous montrons comment la boîte de dialogue ressemblerait si vous avez créé un nouveau profil de lancement nommé test2
qui démarre uniquement deux des cinq services, webapplication1
avec débogage et webapplication2
sans débogage. Ce profil de lancement lance également un navigateur au démarrage de l’application et l’ouvre sur la page d’accueil de webapplication1
.
Et ces informations sont enregistrées dans launchSettings.json, comme indiqué ci-dessous
{
"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}"
}
}
}
Créer un profil de lancement qui utilise un profil Docker Compose
Vous pouvez également personnaliser davantage les comportements de lancement en créant des profils de lancement Visual Studio qui utilisent les profils Compose.
Pour créer un autre profil qui utilise le profil Compose, sélectionnez Utiliser des profils Docker Compose et choisissez web1
. À présent, le profil de lancement comprend trois services : webapplication1
(qui appartient aux profils web
et web1
Compose), external1
et external2
. Par défaut, les services sans code source tels que external1
et external2
ont l’action par défaut de Démarrer sans débogage. Les applications .NET avec du code source ont par défaut l'option de Démarrer le débogage.
Important
Si un service ne spécifie pas de profil Compose, il est inclus implicitement dans tous les profils Compose.
Ces informations sont enregistrées comme indiqué dans le code suivant. La configuration du service et de son action par défaut ne sont pas enregistrées, sauf si vous modifiez l’action par défaut.
{
"profiles": {
"test1": {
"commandName": "DockerCompose",
"composeProfile": {
"includes": [
"web1"
]
},
"commandVersion": "1.0"
}
}
}
Vous pouvez également modifier l’action de webapplication1 en Démarrer sans débogage. Les paramètres de launchSettings.json ressemblent ensuite au code suivant :
{
"profiles": {
"test1": {
"commandName": "DockerCompose",
"composeProfile": {
"includes": [
"web1"
],
"serviceActions": {
"webapplication1": "StartWithoutDebugging"
}
},
"commandVersion": "1.0"
}
}
}
Propriétés
Voici une description de chaque propriété dans la launchSettings.json:
Propriété | Description |
---|---|
commandName | Nom de la commande. La valeur par défaut est « DockerCompose » |
commandVersion | Numéro de version utilisé pour gérer le schéma du profil de lancement DockerCompose. |
composeProfile | Propriété parente qui définit la définition du profil de lancement. Ses propriétés enfants sont includes et serviceActions |
composeProfile – inclut | Liste des noms de profil Compose qui composent un profil de lancement. |
composeProfile – serviceActions | Répertorie les profils Compose sélectionnés, les services, et l’action de lancement de chaque service |
serviceActions | Répertorie les services sélectionnés et l’action de lancement. |
composeLaunchAction | Spécifie l’action de lancement à effectuer sur F5 ou Ctrl+F5. Les valeurs autorisées sont None, LaunchBrowser et LaunchWCFTestClient. |
composeLaunchUrl | URL à utiliser lors du lancement du navigateur. Les jetons de remplacement valides sont « {ServiceIPAddress} », « {ServicePort} » et « {Scheme} ». Par exemple : {Scheme} ://{ServiceIPAddress} :{ServicePort} |
composeLaunchServiceName | Spécifie le service utilisé pour remplacer les jetons dans composeLaunchUrl. |