Iniciar um subconjunto de serviços do Compose

Se você tiver um aplicativo que consiste em vários serviços e usa o Docker Compose, poderá configurar quais serviços são executados e depurados criando ou editando um perfil de inicialização existente nas configurações de inicialização do Docker Compose. Os perfis de inicialização permitem que você execute dinamicamente apenas os serviços importantes para o cenário atual. Você pode criar e selecionar entre perfis de inicialização para personalizar sua experiência de depuração e definir ações de inicialização específicas, como Browser Launch URL. Você também terá a opção de escolher cada serviço individualmente ou selecionando um perfil do Docker Compose, que também examina o arquivo do Compose para determinar o grupo de serviços a serem executados.

Para obter informações sobre perfis do Docker Compose, confira Usar perfis com o Compose.

Pré-requisitos

Gerenciar configurações de inicialização

Considere o seguinte projeto do Docker Compose no qual o docker-compose.yml tem cinco serviços e três perfis do 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

Há algumas opções para abrir a caixa de diálogo de configurações de inicialização do Docker Compose:

  • No Visual Studio, escolha Depurar>Gerenciar Configurações de Inicialização do Docker Compose:

    Captura de tela do item de menu Gerenciar Configurações de Depuração

    Captura de tela do item de menu Gerenciar Configurações de Depuração

  • Clique com o botão direito do mouse no projeto do Visual Studio docker-compose e selecione Gerenciar Configurações de Inicialização do Docker Compose

    Captura de tela do item de menu de contexto

    Captura de tela do item de menu de contexto

  • Use o Início Rápido (Ctrl+Q) e procure Docker Compose para encontrar o mesmo comando.

No exemplo a seguir, o perfil do Compose web1 é selecionado, que filtra a lista de Serviços para apenas três de cinco incluídos nesse perfil:

Observação

A seção Perfis do Docker Compose só será exibida se houver perfis definidos em seus arquivos docker-compose.yml.

O exemplo a seguir demonstra a seleção entre serviços individuais em vez de filtrar para os serviços em um perfil do Compose. Aqui, mostraremos como seria a caixa de diálogo se você criasse um novo perfil de inicialização chamado test2 que inicia apenas dois dos cinco serviços, webapplication1 com depuração e webapplication2 sem depuração. Esse perfil de inicialização também inicia um navegador quando o aplicativo é iniciado e o abre na home page do webapplication1.

Captura de tela da caixa de diálogo de configurações de inicialização com alguns serviços desmarcados

E essas informações serão salvas em launchSettings.json, conforme mostrado abaixo

{
    "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}"
      }
   }
}

Criar um perfil de inicialização que usa um perfil do Docker Compose

Você também pode personalizar ainda mais os comportamentos de inicialização através da criação de perfis de inicialização do Visual Studio que usam os perfis do Compose.

Para criar outro perfil que use o perfil do Compose, selecione Usar perfis do Docker Compose e escolha web1. Agora, o perfil de inicialização inclui três serviços – webapplication1 (que pertencem aos perfis web e web1 Compose) external1 e external2. Por padrão, os serviços sem código-fonte, como external1 e external2 têm a ação padrão de Iniciar sem depuração. Os aplicativos .NET com código-fonte usarão como padrão Iniciar depuração.

Importante

Se um serviço não especificar um perfil do Compose, ele será incluído em todos os perfis do Compose implicitamente.

Captura de tela da caixa de diálogo de configurações de inicialização com outro perfil criado

Essas informações serão salvas conforme mostrado no código a seguir. A configuração do serviço e sua ação padrão não são salvas, a menos que você altere a ação padrão.

{
  "profiles": {
    "test1": {
      "commandName": "DockerCompose",
      "composeProfile": {
         "includes": [
            "web1"
         ]
      },
      "commandVersion": "1.0"
    }
  }
}

Você também pode alterar a ação de webapplication1 para Iniciar sem depuração. Em seguida, as configurações em launchSettings.json serão semelhantes ao seguinte código:

{
  "profiles": {
    "test1": {
        "commandName": "DockerCompose",
        "composeProfile": {
          "includes": [
              "web1"
              ],
          "serviceActions": {
              "webapplication1": "StartWithoutDebugging"
          }
        },
    "commandVersion": "1.0"
    }
  }
}

Propriedades

Eis uma descrição de cada propriedade no launchSettings.json:

Propriedade Descrição
commandName O nome do comando. O padrão é "DockerCompose"
commandVersion Número de versão usado para gerenciar o esquema do perfil de inicialização do DockerCompose.
composeProfile Propriedade pai que determina a definição do perfil de inicialização. Suas propriedades filho são includes e serviceActions
composeProfile - inclui Lista dos nomes de perfil do Compose que compõem um perfil de inicialização.
composeProfile - serviceActions Lista os perfis e serviços do Compose selecionados e a ação de inicialização de cada serviço
serviceActions Lista os serviços selecionados e a ação de inicialização.
composeLaunchAction Especifica a ação de inicialização a ser executada em F5 ou Ctrl+F5. Os valores permitidos são None, LaunchBrowser e LaunchWCFTestClient.
composeLaunchUrl A URL a ser usada ao iniciar o navegador. Os tokens de substituição válidos são "{ServiceIPAddress}", "{ServicePort}" e "{Scheme}". Por exemplo: {Scheme}://{ServiceIPAddress}:{ServicePort}
composeLaunchServiceName Especifica o serviço usado para substituir os tokens em composeLaunchUrl.