Lancer un sous-ensemble de vos services Compose
Si vous avez une application composée de plusieurs services et qui 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 afin de 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 de choisir 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 des profils avec Compose.
Prérequis
- 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 l’orchestration de conteneurs avec Docker Compose
Gérer les paramètres de lancement
Considérez le projet Docker Compose suivant dans lequel le fichier docker-compose.yml contient 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 des paramètres de lancement de Docker Compose :
Dans Visual Studio, choisissez Déboguer>Gérer les paramètres de lancement de Docker Compose :
Cliquez avec le bouton droit de la souris sur le projet Visual Studio
docker-compose
et sélectionnez Gérer les paramètres de lancement de Docker ComposeUtilisez le lancement rapide (Ctrl+Q) et recherchez Docker Compose pour trouver la même commande.
Dans l’exemple ci-dessous, le profil Compose web1
est sélectionné, ce qui filtre la liste Services uniquement sur les trois services sur cinq inclus dans ce profil :
Notes
La section des 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 de services individuels au lieu de filtrer les services dans un profil Compose. Ici, vous pouvez voir à quoi ressemblerait la boîte de dialogue si vous créiez un nouveau profil de lancement nommé test2
qui ne démarre que 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
.
Ces informations seront 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 les profils Docker Compose, puis choisissez web1
. Le profil de lancement comprend désormais trois services : webapplication1
(qui appartient aux profils Compose web
et web1
), external1
et external2
. Par défaut, les services sans code source tels que external1
et external2
ont l’action par défaut Démarrer sans débogage. Les applications .NET avec code source ont l’action par défaut Démarrer le débogage.
Important
Si un service ne spécifie pas de profil Compose, il sera implicitement inclus dans tous les profils Compose.
Ces informations seront enregistrées comme indiqué dans le code suivant. La configuration du service et 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 au code suivant :
{
"profiles": {
"test1": {
"commandName": "DockerCompose",
"composeProfile": {
"includes": [
"web1"
],
"serviceActions": {
"webapplication1": "StartWithoutDebugging"
}
},
"commandVersion": "1.0"
}
}
}
Propriétés
Vous trouverez ci-dessous une description de chaque propriété dans launchSettings.json :
Propriété | Description |
---|---|
commandName | Nom de la commande. Par défaut, « DockerCompose » |
commandVersion | Numéro de version utilisé pour gérer le schéma du profil de lancement DockerCompose. |
composeProfile | Propriété parent qui définit le profil de lancement. Ses propriétés enfants sont includes et serviceActions |
composeProfile – inclut | Liste des noms des profils 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 avec F5 ou Ctrl+F5. Les valeurs autorisées sont None, LaunchBrowser et LaunchWCFTestClient. |
composeLaunchUrl | URL à utiliser au 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. |