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
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). |
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
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