Inicio de un subconjunto de servicios de Compose
Si tiene una aplicación que consta de varios servicios y usa Docker Compose, puede configurar qué servicios se ejecutan y depuran mediante la creación o edición de un perfil de inicio existente en la configuración de inicio de Docker Compose. Los perfiles de inicio permiten ejecutar dinámicamente solo los servicios que importan en su escenario actual. Puede crear y seleccionar perfiles de inicio para personalizar la experiencia de depuración y establecer acciones de inicio específicas, como Browser Launch URL
. También tiene la opción de elegir individualmente cada servicio o elegir un perfil de Docker Compose, que también examina el archivo compose para determinar el grupo de servicios que se va a ejecutar.
Para obtener información sobre los perfiles de inicio de Docker Compose, vea Uso de perfiles con Compose.
Prerrequisitos
- visual Studio 2019, versión 16.10 o posterior
- Una solución de .NET con orquestación de contenedores mediante Docker Compose
- visual Studio 2022 o visual Studio 2019, versión 16.10 o posterior
- Una solución de .NET con orquestación de contenedores mediante Docker Compose
Administrar la configuración de inicio
Tenga en cuenta el siguiente proyecto de Docker Compose en el que el docker-compose.yml tiene cinco servicios y tres perfiles de Compose (web, web1 y 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
Hay algunas opciones para abrir el cuadro de diálogo de configuración de inicio de Docker Compose:
En Visual Studio, elija Depurar>Administrar la configuración de inicio de Docker Compose:
Haga clic con el botón derecho en el proyecto de Visual Studio
docker-compose
y seleccione Administrar configuración de inicio de Docker ComposeUse el inicio rápido (Ctrl+Q) y busque Docker Compose para encontrar el mismo comando.
En el ejemplo siguiente, se selecciona el perfil de Compose web1
, que filtra la lista Servicios solo a tres de los cinco incluidos en ese perfil:
Nota
La sección Perfiles de Docker Compose solo aparece si hay perfiles definidos en los archivos de docker-compose.yml.
En el ejemplo siguiente se muestra cómo seleccionar entre servicios individuales en lugar de filtrar por los servicios de un perfil de Compose. Aquí se muestra el aspecto del cuadro de diálogo si ha creado un perfil de inicio denominado test2
que solo inicia dos de los cinco servicios, webapplication1
con depuración y webapplication2
sin depuración. Este perfil de inicio también inicia un explorador cuando se inicia la aplicación y lo abre en la página principal de webapplication1
.
Y esta información se guarda en launchSettings.json como se muestra a continuación.
{
"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}"
}
}
}
Creación de un perfil de inicio que use un perfil de Docker Compose
También puede personalizar aún más los comportamientos de inicio mediante la creación de perfiles de inicio de Visual Studio que usen los perfiles de Compose.
Para crear otro perfil que use el perfil de Compose, seleccione Usar perfiles de Docker Compose y elija web1
. Ahora el perfil de inicio incluye tres servicios: webapplication1
(que pertenece a los perfiles web
y web1
Compose), external1
y external2
. De manera predeterminada, los servicios sin código fuente como external1
y external2
tienen la acción predeterminada Iniciar sin depurar. La opción predeterminada de las aplicaciones .NET con código fuente es Iniciar depuración.
Importante
Si un servicio no especifica un perfil de Compose, se incluye implícitamente en todos los perfiles de Compose.
Esta información se guarda como se muestra en el código siguiente. La configuración del servicio y su acción predeterminada no se guardan a menos que cambie la acción predeterminada.
{
"profiles": {
"test1": {
"commandName": "DockerCompose",
"composeProfile": {
"includes": [
"web1"
]
},
"commandVersion": "1.0"
}
}
}
También puede cambiar la acción de webapplication1 a Iniciar sin depurar. La configuración de launchSettings.json, a continuación, se parece al código siguiente:
{
"profiles": {
"test1": {
"commandName": "DockerCompose",
"composeProfile": {
"includes": [
"web1"
],
"serviceActions": {
"webapplication1": "StartWithoutDebugging"
}
},
"commandVersion": "1.0"
}
}
}
Propiedades
A continuación, se presenta una descripción de cada propiedad en launchSettings.json:
Propiedad | Descripción |
---|---|
commandName | Nombre del comando. El valor predeterminado es "DockerCompose" |
commandVersion | Número de versión usado para administrar el esquema del perfil de inicio de DockerCompose. |
composeProfile | Propiedad primaria que define la definición del perfil de inicio. Sus propiedades secundarias son includes y serviceActions |
composeProfile: includes | Lista de los nombres de perfil de Compose que componen un perfil de inicio. |
composeProfile: serviceActions | Enumera los perfiles de Compose seleccionados, los servicios y la acción de inicio de cada servicio. |
serviceActions | Enumera los servicios seleccionados y la acción de inicio. |
composeLaunchAction | Especifica la acción de inicio que se va a realizar en F5 o Ctrl+F5. Los valores permitidos son None, LaunchBrowser y LaunchWCFTestClient. |
composeLaunchUrl | Dirección URL que se va a usar al iniciar el explorador. Los tokens de reemplazo válidos son "{ServiceIPAddress}", "{ServicePort}" y "{Scheme}". Por ejemplo: {Scheme}://{ServiceIPAddress}:{ServicePort} |
composeLaunchServiceName | Especifica el servicio usado para reemplazar los tokens en composeLaunchUrl. |