Propriedades de build do Docker Compose
Além das propriedades que controlam projetos individuais do Docker, descritas em Propriedades de build das Ferramentas de Contêiner, você também pode personalizar como o Visual Studio compila seus projetos do Docker Compose definindo as propriedades do Docker Compose que o MSBuild usa para compilar a solução. Você também pode controlar como o depurador do Visual Studio executa aplicativos Docker Compose definindo rótulos de arquivo nos arquivos de configuração do Docker Compose.
Como definir as propriedades do MSBuild
Para definir o valor de uma propriedade, edite o arquivo de projeto. Para propriedades do Docker Compose, esse arquivo de projeto é aquele com uma .dcproj
extensão, a menos que indicado de outra forma na tabela na próxima seção. Por exemplo, suponha que você queira especificar que o navegador seja iniciado ao iniciar a depuração. Você pode definir a DockerLaunchAction
propriedade no arquivo de projeto da .dcproj
seguinte maneira.
<PropertyGroup>
<DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
</PropertyGroup>
Adicione a configuração da propriedade a um elemento PropertyGroup
existente ou, se não houver um, crie um elemento PropertyGroup
.
Propriedades do Docker Compose no MSBuild
A tabela a seguir mostra as propriedades do MSBuild disponíveis para projetos do Docker Compose.
Nome da propriedade | Location | Descrição | Valor padrão |
---|---|---|---|
AdditionalComposeFilePaths | dcproj | Especifica arquivos de composição adicionais em uma lista delimitada por ponto e vírgula a serem enviados a docker-compose.exe para todos os comandos. Caminhos relativos do arquivo de projeto do Docker Compose (dcproj) são permitidos. | - |
DockerComposeBaseFilePath | dcproj | Especifica a primeira parte dos nomes de arquivo dos arquivos do Docker Compose, sem a .yml extensão. Por exemplo: 1. DockerComposeBaseFilePath = null/undefined: use o caminho docker-compose do arquivo base 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 estarão um nível acima. |
docker-compose |
DockerComposeBuildArguments | dcproj | Especifica os parâmetros extra a serem passados para o comando docker-compose build . Por exemplo, --parallel --pull . |
|
DockerComposeDownArguments | dcproj | Especifica os parâmetros extra a serem passados para o comando docker-compose down . Por exemplo, --timeout 500 . |
- |
DockerComposeEnvFilePath | dcproj | O caminho relativo para um arquivo .env que é passado para docker compose comandos via --env-file . Consulte Usar o atributo env_file. |
Vazio |
DockerComposeProjectName | dcproj | Se especificado, substitui o nome do projeto para um projeto do Docker Compose. | "dockercompose" + hash gerado automaticamente |
DockerComposeProjectPath | csproj ou vbproj | O caminho relativo para o arquivo do projeto do Docker Compose (dcproj). Defina essa propriedade ao publicar o projeto de serviço para localizar as configurações do build de imagem associadas armazenadas no arquivo docker-compose.yml. | - |
DockerComposeProjectsToIgnore | dcproj | Especifica os projetos a serem ignorados pelas ferramentas do Docker Compose durante a depuração. Essa propriedade pode ser usada para qualquer projeto. Caminhos de arquivo podem ser especificados de duas maneiras: 1. Relativos a dcproj. Por exemplo, <DockerComposeProjectsToIgnore>path\to\AngularProject1.csproj</DockerComposeProjectsToIgnore> . 2. Caminhos absolutos. Observação: os caminhos devem ser separados pelo caractere delimitador ; . |
- |
DockerComposeUpArguments | dcproj | Especifica os parâmetros extra a serem passados para o comando docker-compose up . Por exemplo, --timeout 500 . |
- |
DockerDevelopmentMode | dcproj | Controla se o projeto do usuário é compilado no contêiner. Os valores permitidos Rápido ou Regular controlam quais estágios são compilados em um Dockerfile. A configuração de Depuração é o modo Rápido por padrão e, caso contrário, o modo Regular. | Rápido |
DockerLaunchAction | dcproj | Especifica a ação de inicialização a ser executada ao pressionar F5 ou Ctrl+F5. Os valores permitidos são None, LaunchBrowser e LaunchWCFTestClient. | Nenhum |
DockerLaunchBrowser | dcproj | Indica se o navegador deve ser iniciado. Ignorado se DockerLaunchAction for especificado. | Falso |
DockerServiceName | dcproj | Se DockerLaunchAction ou DockerLaunchBrowser forem especificados, DockerServiceName especificará qual serviço referenciado docker-compose no arquivo será iniciado. |
- |
DockerServiceUrl | dcproj | 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} | - |
DockerTargetOS | dcproj | O sistema operacional de destino usado ao compilar a imagem do Docker. | - |
Exemplo
Se você alterar o local dos docker-compose
arquivos, definindo DockerComposeBaseFilePath
um caminho relativo, também precisará garantir que o contexto de build seja alterado para que ele faça referência à pasta da solução. Por exemplo, se o docker-compose
arquivo for uma pasta chamada DockerComposeFiles, o arquivo do Docker Compose deverá definir o contexto de compilação como ".." ou ".. /..", dependendo de onde ele está em relação à 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 build definido como o caminho relativo da pasta da solução (nesse 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 em docker-compose.yml. Além disso, o Visual Studio gera arquivos de substituição docker-compose.vs.debug.g.yml (para o modo Rápido ) e docker-compose.vs.release.g.yml (para o modo 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 o modo Rápido) ou docker-compose.vs.release.yml (para o modo Regular) no mesmo diretório que o arquivo docker-compose.yml. Clique com o botão direito do mouse no projeto do Docker Compose e selecione Abrir pasta no Explorador de Arquivos e use Adicionar>Item Existente para adicionar o arquivo ao seu projeto do Docker Compose.
Dica
Para descobrir os valores padrão de qualquer uma das configurações do Visual Studio, examine o 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.
Rótulos de arquivo do Docker Compose
Em 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 iniciado ao iniciar a depuração. Para aplicativos .NET Core, essa configuração normalmente é dotnet. |
com.microsoft.visualstudio.debuggee.arguments | Os argumentos passados ao programa ao iniciar a depuração. Para aplicativos .NET Core, esses argumentos normalmente 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 diretório inicial ao iniciar a depuração. Essa configuração normalmente é /app para contêineres do Linux ou C:\app para contêineres do Windows. |
com.microsoft.visualstudio.debuggee.killprogram | Esse comando é usado para interromper o programa depurador em execução dentro do contêiner (quando necessário). |
Nome do rótulo | Descrição |
---|---|
com.microsoft.visualstudio.debuggee.program | O programa iniciado ao iniciar a depuração. Para aplicativos .NET Core, essa configuração normalmente é dotnet. |
com.microsoft.visualstudio.debuggee.arguments | Os argumentos passados ao programa ao iniciar a depuração. Para aplicativos .NET Core, esses argumentos normalmente 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 diretório inicial ao iniciar a depuração. Essa configuração normalmente é /app para contêineres do Linux ou C:\app para contêineres do Windows. |
com.microsoft.visualstudio.debuggee.killprogram | Esse comando é usado para interromper o programa depurador em execução dentro do contêiner (quando necessário). |
com.microsoft.visualstudio.debuggee.noattach.program | O programa iniciado quando você usa Iniciar sem depuração (Ctrl+F5) em um projeto do Azure Functions que é executado em um processo isolado. Normalmente, F5 e Ctrl+F5 usam o mesmo programa, mas se qualquer tipo de projeto como o Azure Functions em um processo isolado exigir um programa diferente de F5, ele será usado. |
com.microsoft.visualstudio.debuggee.noattach.arguments | Os argumentos passados para o programa quando você usa Iniciar sem depuração (Ctrl+F5) em um projeto do Azure Functions que é executado em um processo isolado. |
com.microsoft.visual-studio.nome-do-projeto | O nome do projeto, que ajuda o Visual Studio a encontrar o projeto se o projeto não estiver na mesma pasta que o Dockerfile. |
Personalizar o processo de build do Docker
Você pode declarar qual estágio compilar no Dockerfile usando a configuração target
na propriedade build
. Essa substituição pode ser usada apenas em 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 o aplicativo usando a configuração entrypoint
e tornando-a dependente do DockerDevelopmentMode
. Por exemplo, se você precisar configurar um certificado somente no modo Rápido executando update-ca-certificates
, mas não no modo Regular, poderá adicionar o seguinte código apenas docker-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 do contêiner
Próximas etapas
Para obter informações sobre as propriedades do MSBuild em geral, consulte Propriedades do MSBuild.
Confira também
Propriedades de build das Ferramentas de Contêiner
Configurações de inicialização das Ferramentas de Contêiner
Gerenciar perfis de inicialização do Docker Compose no Visual Studio