Partilhar via


Propriedades de compilação do Docker Compose

Além das propriedades que controlam projetos individuais do Docker, descritas em Container Tools build properties, você também pode personalizar como o Visual Studio cria seus projetos Docker Compose definindo as propriedades Docker Compose que o MSBuild usa para criar sua solução. Você também pode controlar como o depurador do Visual Studio executa seus aplicativos Docker Compose definindo rótulos de arquivo em arquivos de configuração do Docker Compes.

Como definir as propriedades do MSBuild

Para definir o valor de uma propriedade, edite o arquivo de projeto. Para as propriedades do Docker Compose, esse arquivo de projeto é aquele com uma extensão .dcproj, a menos que indicado de outra forma na tabela na próxima seção. Por exemplo, suponha que você queira especificar para iniciar o navegador quando iniciar a depuração. Você pode definir a propriedade DockerLaunchAction no arquivo de projeto .dcproj da seguinte maneira.

<PropertyGroup>
   <DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
</PropertyGroup>

Você pode adicionar a configuração de propriedade a um elemento PropertyGroup existente ou, se não houver, criar um novo elemento PropertyGroup.

Propriedades do Docker Compose MSBuild

A tabela a seguir mostra as propriedades do MSBuild disponíveis para projetos Docker Compose (arquivos.dcproj).

Nome da propriedade Descrição
AdicionalComposeFilePaths Especifica arquivos de composição adicionais em uma lista delimitada por ponto-e-vírgula a ser enviada ao docker-compose.exe para todos os comandos. Caminhos relativos do arquivo de projeto Docker Compose (dcproj) são permitidos.
DependencyAwareStart Permite uma maneira diferente de iniciar o aplicativo que suporta as propriedades do Docker Compose depends_on e healthcheck, que controlam a ordem de inicialização do serviço e as verificações de integridade.

Requer Visual Studio 17.13 ou posterior.

Valor padrão: False
DockerComposeBaseFilePath Especifica a primeira parte dos nomes de arquivo dos arquivos de composição do Docker, sem a extensão .yml. Por exemplo:
1. DockerComposeBaseFilePath = null/undefined: use o caminho do arquivo base docker-compose, e os arquivos serão nomeados docker-compose.yml e docker-compose.override.yml.
2. DockerComposeBaseFilePath = mydockercompose: os arquivos serão nomeados mydockercompose.yml e mydockercompose.override.yml.
3. DockerComposeBaseFilePath = .. \mydockercompose: os arquivos subirão um nível.

Valor padrão: docker-compose
DockerComposeBuildArguments Especifica os parâmetros extras a serem passados para o comando docker-compose build. Por exemplo, --parallel --pull.
DockerComposeDownArguments Especifica os parâmetros extras a serem passados para o comando docker-compose down. Por exemplo, --timeout 500.
DockerComposeEnvFilePath O caminho relativo para um arquivo .env que é passado para docker compose comandos via --env-file. Consulte Usar o atributo env_file.

Valor padrão: Vazio
DockerComposeProjectName Se especificado, substitui o nome do projeto para um projeto Docker Compose.

Valor padrão: "dockercompose" + hash gerado automaticamente
DockerComposeProjectsToIgnore Especifica projetos a serem ignorados pelas ferramentas de composição do Docker durante a depuração. Esta propriedade pode ser usada para qualquer projeto. Os caminhos de arquivo podem ser especificados de duas maneiras:
1. Em relação ao dcproj. Por exemplo, <DockerComposeProjectsToIgnore> path\to\AngularProject1.csproj </DockerComposeProjectsToIgnore>.
2. Caminhos absolutos.
Nota: Os caminhos devem ser separados pelo caractere delimitador ;.
DockerComposeUpArguments Especifica os parâmetros extras a serem passados para o comando docker-compose up. Por exemplo, --timeout 500.
DockerDevelopmentMode Controla se o projeto do usuário é criado no contêiner. Os valores permitidos de Fast ou Regular controle quais estágios são criados em um Dockerfile. A configuração de depuração é o modo Rápido por padrão e o modo Regular caso contrário.

Valor padrão: Rápido
DockerLaunchAction Especifica a ação de inicialização a ser executada em F5 ou Ctrl+F5. Os valores permitidos são None, LaunchBrowser e LaunchWCFTestClient.

Valor padrão: Nenhum
DockerLaunchBrowser Indica se o navegador deve ser iniciado. Ignorado se DockerLaunchAction for especificado.

Valor padrão: False
DockerServiceName Se DockerLaunchAction ou DockerLaunchBrowser forem especificados, DockerServiceName especificará qual serviço referenciado no arquivo docker-compose será iniciado.
DockerServiceUrl O URL a ser usado ao iniciar o navegador. Os tokens de substituição válidos são "{ServiceIPAddress}", "{ServicePort}" e "{Scheme}". Por exemplo: {Scheme}://{ServiceIPAddress}:{ServicePort}
DockerTargetOS O sistema operacional de destino usado ao criar a imagem do Docker.

Além disso, a propriedade DockerComposeProjectPath em um arquivo de projeto .csproj ou .vbproj especifica o caminho relativo para o arquivo de projeto Docker Compose (.dcproj). Defina essa propriedade ao publicar o projeto de serviço para localizar as configurações de compilação de imagem associadas armazenadas no arquivo docker-compose.yml.

Exemplo

Se você alterar o local dos arquivos de docker-compose, definindo DockerComposeBaseFilePath para um caminho relativo, também precisará certificar-se de que o contexto de compilação seja alterado para que faça referência à pasta da solução. Por exemplo, se o arquivo docker-compose for uma pasta chamada DockerComposeFiles, o arquivo Docker Compose deverá definir o contexto de compilação como ".." ou ".. /..", dependendo de onde é relativo à pasta da solução.

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" Sdk="Microsoft.Docker.Sdk">
  <PropertyGroup Label="Globals">
    <ProjectVersion>2.1</ProjectVersion>
    <DockerTargetOS>Windows</DockerTargetOS>
    <ProjectGuid>154022c1-8014-4e9d-bd78-6ff46670ffa4</ProjectGuid>
    <DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
    <DockerServiceUrl>{Scheme}://{ServiceIPAddress}{ServicePort}</DockerServiceUrl>
    <DockerServiceName>webapplication1</DockerServiceName>
    <DockerComposeBaseFilePath>DockerComposeFiles\mydockercompose</DockerComposeBaseFilePath>
    <AdditionalComposeFilePaths>AdditionalComposeFiles\myadditionalcompose.yml</AdditionalComposeFilePaths>
  </PropertyGroup>
  <ItemGroup>
    <None Include="DockerComposeFiles\mydockercompose.override.yml">
      <DependentUpon>DockerComposeFiles\mydockercompose.yml</DependentUpon>
    </None>
    <None Include="DockerComposeFiles\mydockercompose.yml" />
    <None Include=".dockerignore" />
  </ItemGroup>
</Project>

O arquivo mydockercompose.yml deve ter esta aparência, com o contexto de compilação definido para o caminho relativo da pasta da solução (neste caso, ..).

version: '3.4'

services:
  webapplication1:
    image: ${DOCKER_REGISTRY-}webapplication1
    build:
      context: ..
      dockerfile: WebApplication1\Dockerfile

Observação

DockerComposeBuildArguments, DockerComposeDownArguments e DockerComposeUpArguments são novos no Visual Studio 2019 versão 16.3.

Substituindo a configuração do Docker Compose do Visual Studio

Normalmente, docker-compose.override.yml é usado para substituir determinadas configurações no docker-compose.yml. Além disso, o Visual Studio gera arquivos de substituição docker-compose.vs.debug.g.yml (para modo de rápido) e docker-compose.vs.release.g.yml (para modo de regular) com configurações específicas para executar o aplicativo dentro do Visual Studio. Você pode substituir essas configurações do Visual Studio colocando um arquivo chamado docker-compose.vs.debug.yml (para modo de rápido) ou docker-compose.vs.release.yml (para modo regular) no mesmo diretório que o arquivo docker-compose.yml. Clique com o botão direito do mouse no projeto Docker Compose e selecione Abrir Pasta no Explorador de Arquivos e, em seguida, use AdicionarItem Existente para adicionar o arquivo ao seu projeto Docker Compose.

Dica

Para descobrir os valores padrão para qualquer uma das configurações do Visual Studio, procure no diretório de saída intermediário (por exemplo, obj/Docker) para docker-compose.vs.debug.g.yml ou docker-compose.vs.release.g.yml. Esses arquivos são gerados pelo Visual Studio e não devem ser modificados.

Docker Compose rótulos de arquivo

No docker-compose.vs.debug.yml ou docker-compose.vs.release.yml, você pode definir rótulos específicos de substituição da seguinte maneira:

services:
  webapplication1:
    labels:
      com.microsoft.visualstudio.debuggee.workingdirectory: "C:\\my_app_folder"

Use aspas duplas em torno dos valores, como no exemplo anterior, e use a barra invertida como um caractere de escape para barras invertidas em caminhos.

Nome do rótulo Descrição
com.microsoft.visualstudio.debuggee.program O programa foi iniciado ao iniciar a depuração. Para aplicativos .NET Core, essa configuração normalmente é dotnet.
com.microsoft.visualstudio.debuggee.arguments Os argumentos passados para o programa ao iniciar a depuração. Para aplicativos .NET Core, esses argumentos geralmente são caminhos de pesquisa adicionais para pacotes NuGet seguidos pelo caminho para o assembly de saída do projeto.
com.microsoft.visualstudio.debuggee.workingdirectory O diretório usado como o diretório inicial ao iniciar a depuração. Essa configuração normalmente é /app para contêineres Linux ou C:\app para contêineres do Windows.
com.microsoft.visualstudio.debuggee.killprogram Este comando é usado para parar o programa de depuração que está sendo executado dentro do contêiner (quando necessário).
Nome do rótulo Descrição
com.microsoft.visualstudio.debuggee.program O programa foi iniciado ao iniciar a depuração. Para aplicativos .NET Core, essa configuração normalmente é dotnet.
com.microsoft.visualstudio.debuggee.arguments Os argumentos passados para o programa ao iniciar a depuração. Para aplicativos .NET Core, esses argumentos geralmente são caminhos de pesquisa adicionais para pacotes NuGet seguidos pelo caminho para o assembly de saída do projeto.
com.microsoft.visualstudio.debuggee.workingdirectory O diretório usado como o diretório inicial ao iniciar a depuração. Essa configuração normalmente é /app para contêineres Linux ou C:\app para contêineres do Windows.
com.microsoft.visualstudio.debuggee.killprogram Este comando é usado para parar o programa de depuração que está sendo executado dentro do contêiner (quando necessário).
com.microsoft.visualstudio.debuggee.noattach.program O programa é iniciado quando você usa Iniciar sem depurar (Ctrl+F5) em um projeto de funções do Azure que é executado em um processo isolado . Normalmente, F5 e Ctrl+F5 usa o mesmo programa, mas se qualquer tipo de projeto como o Azure Functions em um processo isolado exigir um programa diferente do F5, isso será usado.
com.microsoft.visualstudio.debuggee.noattach.arguments Os argumentos passados para o programa quando você usa Iniciar sem depurar (Ctrl+F5) em um projeto de funções do Azure que é executado em um processo isolado.
com.microsoft.visual-studio.nome-do-projeto O nome do projeto, que ajuda o Visual Studio a localizar o projeto se o projeto não estiver na mesma pasta que o Dockerfile.

Personalizar o processo de compilação do Docker

Você pode declarar qual estágio criar em seu Dockerfile usando a configuração target na propriedade build. Essa substituição pode ser usada apenas no docker-compose.vs.debug.yml ou docker-compose.vs.release.yml

services:
  webapplication1:
    build:
      target: customStage
    labels:
      ...

Personalizar o processo de inicialização do aplicativo

Você pode executar um comando ou script personalizado antes de iniciar seu aplicativo usando a configuração entrypoint e tornando-o dependente do DockerDevelopmentMode. Por exemplo, se você precisar configurar um certificado somente no modo de rápida executando , mas não no modo regular, poderá adicionar o seguinte código em apenasdocker-compose.vs.debug.yml:

services:
  webapplication1:
    entrypoint: "sh -c 'update-ca-certificates && tail -f /dev/null'"
    labels:
      ...

Para obter mais informações, consulte Ponto de entrada de contêiner

Próximos passos

Para obter informações sobre as propriedades do MSBuild em geral, consulte Propriedades do MSBuild.

Ver também

Ferramentas de Contêiner criam propriedades

configurações de inicialização do Container Tools

Gerenciar perfis de inicialização para o Docker Compose no Visual Studio

MSBuild propriedades reservadas e bem conhecidas