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 de forma dinámica solo los servicios relevantes para el 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
. Además, tendrá la opción de elegir cada servicio individualmente o elegir un perfil de Docker Compose, que también examina el archivo de 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
Administración de la configuración de inicio
Considere el siguiente proyecto de Docker Compose en el que 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
docker-compose
de Visual Studio y seleccione Administrar la configuración de inicio de Docker Compose.Use 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 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 guardará en launchSettings.js 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 en el que se usa un perfil de Docker Compose
También puede personalizar aún más los comportamientos de inicio si crea perfiles de inicio de Visual Studio en los que se usan los perfiles de Compose.
Para crear otro perfil que use el de Compose, seleccione Use Docker Compose profiles (Usar perfiles de Docker Compose) y elija web1
. Ahora, el perfil de inicio incluye tres servicios: webapplication1
(que pertenece a los perfiles de Compose web
y web1
), external1
y external2
. De manera predeterminada, los servicios sin código fuente como external1
y external2
tienen la acción predeterminada Iniciar sin depurar. Las aplicaciones de .NET con código fuente tendrán como valor predeterminado Iniciar depuración.
Importante
Si un servicio no especifica un perfil de Compose, se incluirá implícitamente en todos los perfiles de Compose.
Esta información se guardará 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 es similar al código siguiente:
{
"profiles": {
"test1": {
"commandName": "DockerCompose",
"composeProfile": {
"includes": [
"web1"
],
"serviceActions": {
"webapplication1": "StartWithoutDebugging"
}
},
"commandVersion": "1.0"
}
}
}
Propiedades
Esta es una descripción de cada propiedad de launchSettings.json:
Propiedad | Descripción |
---|---|
commandName | Nombre del comando. Valores predeterminados de "DockerCompose" |
commandVersion | Número de versión que se usa para administrar el esquema del perfil de inicio de Docker Compose. |
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 al presionar F5 o Ctrl+F5. Los valores permitidos son None, LaunchBrowser y LaunchWCFTestClient. |
composeLaunchUrl | Esta dirección URL se usa al iniciar el explorador. Los tokens de reemplazo válidos son "{ServiceIPAddress}", "{ServicePort}" y "{Scheme}". Por ejemplo: {Scheme}://{ServiceIPAddress}:{ServicePort} |
composeLaunchServiceName | Especifica el servicio utilizado para reemplazar los tokens en composeLaunchUrl. |