Avviare un subset di servizi Compose
Se si dispone di un'applicazione costituita da più servizi e si usa Docker Compose, è possibile configurare i servizi eseguiti ed eseguirne il debug creando o modificando un profilo di avvio esistente nelle impostazioni di avvio di Docker Compose. I profili di avvio consentono di eseguire in modo dinamico solo i servizi importanti per lo scenario corrente. È possibile creare e selezionare i profili di avvio per personalizzare l'esperienza di debug e impostare azioni di avvio specifiche, Browser Launch URL
ad esempio . Si avrà anche la possibilità di scegliere ogni servizio singolarmente o scegliendo un profilo Docker Compose, che esamina anche il file Compose per determinare il gruppo di servizi da eseguire.
Per informazioni sui profili Docker Compose, vedere Uso dei profili con Compose.
Prerequisiti
- Visual Studio 2019 versione 16.10 o successiva
- Soluzione .NET con Orchestrazione contenitori con Docker Compose
- Visual Studio 2022 o Visual Studio 2019 versione 16.10 o successiva
- Soluzione .NET con Orchestrazione contenitori con Docker Compose
Gestire le impostazioni di avvio
Si consideri il progetto Docker Compose seguente in cui il docker-compose.yml ha cinque servizi e tre profili Compose (Web, Web1 e 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
Sono disponibili alcune opzioni per aprire la finestra di dialogo delle impostazioni di avvio di Docker Compose:
In Visual Studio scegliere Debug Manage Docker Compose Launch Impostazioni:In Visual Studio choose Debug Manage Docker Compose Launch Impostazioni:In Visual Studio choose Debug>Manage Docker Compose Launch Impostazioni:
Fare clic con il pulsante destro del mouse sul progetto di Visual Studio
docker-compose
e scegliere Gestisci avvio Docker Compose ImpostazioniUsare Avvio rapido (CTRL+Q) e cercare Docker Compose per trovare lo stesso comando.
Nell'esempio seguente viene selezionato il web1
profilo Compose, che filtra l'elenco Servizi solo per i tre inclusi in tale profilo:
Nota
La sezione Profili Docker Compose viene visualizzata solo se sono presenti profili definiti nei file di docker-compose.yml .
Nell'esempio seguente viene illustrata la selezione tra singoli servizi invece di filtrare i servizi in un profilo Compose. In questo caso viene illustrato come verrà visualizzata la finestra di dialogo se è stato creato un nuovo profilo di avvio denominato test2
che avvia solo due dei cinque servizi, webapplication1
con il debug e webapplication2
senza eseguire il debug. Questo profilo di avvio avvia anche un browser all'avvio dell'applicazione e lo apre alla home page di webapplication1
.
E queste informazioni verranno salvate nel lancio Impostazioni.json come illustrato di seguito
{
"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}"
}
}
}
Creare un profilo di avvio che usa un profilo Docker Compose
È anche possibile personalizzare ulteriormente i comportamenti di avvio creando profili di avvio di Visual Studio che usano i profili Compose.
Per creare un altro profilo che usa il profilo Compose, selezionare Usa profili Docker Compose e scegliere web1
. Il profilo di avvio include ora tre servizi, webapplication1
che appartengono sia ai web
web1
profili external1
Compose, sia external2
a . Per impostazione predefinita, i servizi senza codice sorgente, external1
ad esempio e external2
hanno l'azione predefinita Avvia senza eseguire il debug. Per impostazione predefinita, le applicazioni .NET con codice sorgente verranno avviate il debug.
Importante
Se un servizio non specifica un profilo Compose, verrà incluso in tutti i profili Compose in modo implicito.
Queste informazioni verranno salvate come illustrato nel codice seguente. La configurazione per il servizio e l'azione predefinita non vengono salvate a meno che non si modifichi l'azione predefinita.
{
"profiles": {
"test1": {
"commandName": "DockerCompose",
"composeProfile": {
"includes": [
"web1"
]
},
"commandVersion": "1.0"
}
}
}
È anche possibile modificare l'azione di webapplication1 in Avvia senza eseguire il debug. Le impostazioni nell'avvio Impostazioni.json quindi hanno un aspetto simile al codice seguente:
{
"profiles": {
"test1": {
"commandName": "DockerCompose",
"composeProfile": {
"includes": [
"web1"
],
"serviceActions": {
"webapplication1": "StartWithoutDebugging"
}
},
"commandVersion": "1.0"
}
}
}
Proprietà
Ecco una descrizione di ogni proprietà nel lancio Impostazioni.json:
Proprietà | Descrizione |
---|---|
Commandname | Nome del comando. Il valore predefinito è "DockerCompose" |
commandVersion | Numero di versione usato per gestire lo schema del profilo di avvio DockerCompose. |
composeProfile | Proprietà padre che definisce la definizione del profilo di avvio. Le proprietà figlio sono includes e serviceActions |
composeProfile - include | Elenco dei nomi dei profili Compose che costituiscono un profilo di avvio. |
composeProfile - serviceActions | Elenca i profili, i servizi e l'azione di avvio selezionati di ogni servizio |
serviceActions | Elenca i servizi selezionati e l'azione di avvio. |
composeLaunchAction | Specifica l'azione di avvio da eseguire su F5 o CTRL+F5. I valori consentiti sono None, LaunchBrowser e LaunchWCFTestClient. |
composeLaunchUrl | URL da usare durante l'avvio del browser. I token di sostituzione validi sono "{ServiceIPAddress}", "{ServicePort}" e "{Scheme}". Ad esempio: {Scheme}://{ServiceIPAddress}:{ServicePort} |
composeLaunchServiceName | Specifica il servizio usato per sostituire i token in composeLaunchUrl. |