Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Você pode personalizar como o Visual Studio cria seus projetos de contêiner definindo as propriedades que o MSBuild usa para criar seu projeto. Por exemplo, você pode alterar o nome do Dockerfile, especificar tags e rótulos para suas imagens, fornecer argumentos adicionais passados para comandos do Docker e controlar se o Visual Studio faz determinadas otimizações de desempenho, como a criação fora do ambiente de contêiner. Você também pode definir propriedades de depuração, como o nome do executável a ser iniciado e os argumentos de linha de comando a serem fornecidos.
Para definir o valor de uma propriedade, edite o arquivo de projeto. Por exemplo, suponha que seu Dockerfile seja chamado MyDockerfile. Você pode definir a DockerfilePath propriedade no arquivo de projeto da seguinte maneira.
<PropertyGroup>
<DockerfilePath>MyDockerfile</DockerfilePath>
</PropertyGroup>
Observação
A propriedade DockerfilePath substitui a propriedade DockerfileFilepreterida , que ainda é suportada na versão atual do Visual Studio.
Para definir o valor de uma propriedade, edite o arquivo de projeto. Por exemplo, suponha que seu Dockerfile seja chamado MyDockerfile. Você pode definir a DockerfileFile propriedade no arquivo de projeto da seguinte maneira.
<PropertyGroup>
<DockerfileFile>MyDockerfile</DockerfileFile>
</PropertyGroup>
Você pode adicionar a configuração de propriedade a um elemento existente PropertyGroup ou, se não houver um, criar um novo PropertyGroup elemento.
Propriedades para projetos do SDK do .NET
Esta seção descreve as propriedades do MSBuild que se aplicam quando você escolhe o tipo de compilação de contêiner do SDK do .NET.
Há apenas uma propriedade, EnableSdkContainerDebugging, no arquivo de projeto que é necessário para projetos em contêiner do .NET SDK. Ele deve ser definido como True para projetos do SDK do .NET para habilitar a depuração.
<PropertyGroup>
<EnableSdkContainerDebugging>True</EnableSdkContainerDebugging>
</PropertyGroup>
Propriedades para projetos Dockerfile
Esta seção descreve as propriedades do MSBuild que se aplicam quando você escolhe o tipo de compilação de contêiner Dockerfile.
A tabela a seguir mostra as propriedades do MSBuild disponíveis para projetos Dockerfile. A versão do pacote NuGet aplica-se a Microsoft.VisualStudio.Azure.Containers.Tools.Targets.
| Nome da propriedade | Description | Valor predefinido | Versão do pacote NuGet |
|---|---|---|---|
| ContainerDevelopmentMode | Controla se a otimização "build-on-host" (depuração do "Modo Rápido") está ativada. Os valores permitidos são Rápido e Regular. | Rápido | 1.0.1872750 ou superior |
| ContainerVsDbgPath | O caminho para o depurador VSDBG. | %USERPROFILE%\vsdbg\vs2017u5 |
1.0.1985401 ou mais recente |
| DockerDebuggeeArguments | Ao depurar, o depurador é instruído a passar esses argumentos para o executável iniciado. | Não aplicável a projetos ASP.NET .NET Framework | 1.7.8 ou superior |
| DockerDebuggeeProgram | Ao depurar, o depurador é instruído a iniciar este executável. | Para projetos .NET Core e .NET 5 e posteriores: dotnet, ASP.NET projetos do .NET Framework: Não aplicável (os Serviços de Informações da Internet (IIS) são sempre usados) | 1.7.8 ou superior |
| DockerDebuggeeKillProgram | Este comando é usado para matar o processo em execução em um contêiner. | Não aplicável a projetos ASP.NET .NET Framework | 1.7.8 ou superior |
| DockerDebuggeeWorkingDirectory | Ao depurar, o depurador é instruído a usar esse caminho como o diretório de trabalho. | C:\app (Windows) ou /app (Linux) | 1.7.8 ou superior |
| DockerDefaultTargetOS | O sistema operacional de destino padrão usado ao criar a imagem do Docker. | Definido pelo Visual Studio. | 1.0.1985401 ou mais recente |
| DockerImageLabels | O conjunto padrão de rótulos aplicados à imagem do Docker. | com.microsoft.created-by=visual-studio; com.microsoft.visual-studio.project-name=$(MSBuildProjectName) | 1.5.4 ou mais recente |
| DockerFastModeProjectMountDirectory | No Modo Rápido, essa propriedade controla onde o diretório de saída do projeto é montado no volume no contêiner em execução. | C:\app (Windows) ou /app (Linux) | 1.9.2 ou superior |
| DockerfileBuildArguments | Argumentos adicionais passados para o comando build do Docker . | Não aplicável. | 1.0.1872750 ou superior |
| DockerfileContext | O contexto padrão usado ao criar a imagem do Docker, como um caminho relativo ao Dockerfile. | Definido pelo Visual Studio quando o suporte ao Docker é adicionado a um projeto. Em projetos do .NET Framework, defina como "." (a pasta do projeto) e, no .NET Core e no .NET 5 e projetos posteriores, ele é definido como o caminho relativo para a pasta da solução (geralmente ".."). | 1.0.1872750 ou superior |
| DockerfileFastModeStage | O estágio Dockerfile (ou seja, destino) a ser usado ao criar a imagem no modo de depuração. | Primeiro estágio encontrado no Dockerfile (geralmente base) | - |
| DockerfileFile | Descreve o Dockerfile padrão a ser usado para criar/executar o contêiner para o projeto. Esse valor pode ser um caminho. | Dockerfile | 1.0.1872750 ou superior |
| DockerfileRunArguments | Argumentos adicionais passados para o comando de execução do Docker . | Não aplicável. | 1.0.1872750 ou superior |
| DockerfileRunEnvironmentFiles | Lista delimitada por ponto-e-vírgula de arquivos de ambiente aplicados durante a execução do Docker. | Não aplicável. | 1.0.1872750 ou superior |
| DockerfileTag | A tag a ser usada ao criar a imagem do Docker. Na depuração, um ":d ev" é anexado à tag. | Nome do assembly depois de remover caracteres não alfanuméricos com as seguintes regras: Se a tag resultante for toda numérica, "image" será inserida como um prefixo (por exemplo, image2314) Se a tag resultante for uma cadeia de caracteres vazia, "image" será usada como a tag . |
1.0.1872750 ou superior |
A tabela a seguir mostra as propriedades do MSBuild disponíveis para projetos Dockerfile. A versão do pacote NuGet aplica-se a Microsoft.VisualStudio.Azure.Containers.Tools.Targets.
Algumas das propriedades e listas de itens na tabela a seguir são substituições equivalentes para propriedades obsoletas. Nesse caso, a propriedade obsoleta que substitui também é nomeada. Recomendamos atualizar os projetos para usar as propriedades atualmente suportadas. O suporte para propriedades obsoletas pode ser removido em uma atualização futura do Visual Studio.
Algumas propriedades listadas como obsoletas são substituídas por valores equivalentes emlaunchsettings.jsone uma é substituída pela lista de itens do MSBuild.
| Nome da propriedade | Description | Valor predefinido | Versão mínima do pacote NuGet |
|---|---|---|---|
ContainerDevelopmentMode |
Controla se a otimização "build-on-host" (depuração do "Modo Rápido") está ativada. Os valores permitidos são Rápido e Regular. | Rápido | 1.0.1872750 |
ContainerVsDbgPath |
O caminho para o depurador VSDBG. | %USERPROFILE%\vsdbg\vs2017u5 |
1.0.1985401 |
ContainerLabel(substitui DockerImageLabels) |
O conjunto padrão de rótulos aplicados à imagem do Docker.ContainerLabel é uma lista de itens do MSBuild, não uma propriedade. |
com.microsoft.created-by=visual-studio;com.microsoft.visual-studio.project-name=$(MSBuildProjectName) |
1.23.0 para ContainerLabel1.5.4 para DockerImageLabels |
ContainerFastModeProjectMountDirectory(substitui DockerFastModeProjectMountDirectory) |
No Modo Rápido, essa propriedade controla onde o diretório de saída do projeto é montado no volume no contêiner em execução. | C:\app (Windows) ou /app (Linux) | 1.23.0 para ContainerFastModeProjectMountDirectory1.9.2 para DockerFastModeProjectMountDirectory |
ContainerBuildArguments(substitui DockerfileBuildArguments) |
Argumentos adicionais passados para o comando container build. Consulte Docker build ou podman build. | Não aplicável. | 1.23.0 para ContainerBuildArguements1.0.1872750 para DockerfileBuildArguments |
ContainerBuildContext(substitui DockerfileContext) |
O contexto padrão usado ao criar a imagem do Docker, como um caminho relativo ao Dockerfile. | Definido pelo Visual Studio quando o suporte ao Docker é adicionado a um projeto. Ele é definido como o caminho relativo para a pasta da solução (geralmente ".."). | 1.23.0 para ContainerBuildContext1.0.1872750 para DockerfileContext |
ContainerFastModeStage(substitui DockerfileFastModeStage) |
O estágio Dockerfile (ou seja, destino) a ser usado ao criar a imagem no modo de depuração. | Primeiro estágio encontrado no Dockerfile (geralmente base) | - |
ContainerIncludeDefaultImageLabels (substitui: DockerIncludeDefaultImageLabels) |
Se definido como false, não inclui marcas com.microsoft.created-by=visual-studio de imagem padrão e com.microsoft.visual-studio.project-name=$(MSBuildProjectName). |
Verdade | 1.23.0 para ContainerIncludeDefaultImageLabels |
ContainerLabelBuiltImages (substitui DockerLabelBuiltImages) |
Inclua etiquetas em imagens construídas. Se false, nenhum rótulo será adicionado, incluindo rótulos definidos pelo usuário. | Verdade | 1.23.0 para ContainerLabelBuiltImages |
DockerfilePath(substitui DockerfileFile) |
Descreve o Dockerfile padrão a ser usado para criar/executar o contêiner para o projeto. | Dockerfile | 1.23.0 para DockerfilePath1.0.1872750 para DockerfileFile |
ContainerRepository(substitui DockerRepository) |
O repositório a utilizar no rótulo, por exemplo webapplication1 , no rótulo webapplication1:dev. |
O nome do assembly. | 1.23.0 para ContainerRepository |
ContainerImageTag ou ContainerImageTags(substitui DockerfileTag) |
A tag a ser usada ao criar a imagem. Na depuração, um ":d ev" é anexado à tag. | Nome do assembly depois de remover caracteres não alfanuméricos com as seguintes regras: Se a tag resultante for toda numérica, "image" será inserida como um prefixo (por exemplo, image2314) Se a tag resultante for uma cadeia de caracteres vazia, "image" será usada como a tag . |
1.23.0 para ContainerImageTag, ContainerImageTags1.0.1872750 para DockerfileTag. |
DockerDebuggeeArguments(obsoleto, uso commandLineArgs em launchsettings.json) |
Ao depurar, o depurador é instruído a passar esses argumentos para o executável iniciado. | - | 1.7.8 |
DockerDebuggeeProgram(obsoleto, uso executablePath em launchsettings.json) |
Ao depurar, o depurador é instruído a iniciar este executável. | - | 1.7.8 |
DockerDebuggeeKillProgram |
Este comando é usado para matar o processo em execução em um contêiner. | - | 1.7.8 |
DockerDebuggeeWorkingDirectory(obsoleto; utilização workingDirectory em launchsettings.json) |
Ao depurar, o depurador é instruído a usar esse caminho como o diretório de trabalho. | C:\app (Windows) ou /app (Linux) | 1.7.8 |
| DockerDefaultTargetOS | O sistema operacional de destino padrão usado ao criar a imagem do Docker. | Definido pelo Visual Studio. | 1.0.1985401 |
DockerfileRunArguments(obsoleto, uso containerRunArguments em launchsettings.json) |
Argumentos adicionais passados para o comando de execução do Docker . | Não aplicável. | 1.0.1872750 |
DockerfileRunEnvironmentFiles(obsoleto, uso containerRunEnvironmentFiles em launchsettings.json) |
Lista delimitada por ponto-e-vírgula de arquivos de ambiente aplicados durante a execução do Docker. | Não aplicável. | 1.0.1872750 |
ContainerRepository e ContainerImageTag (ou ContainerImageTags) fornecer a capacidade de especificar as duas partes de um rótulo de imagem, o repositório e uma ou mais tags (por exemplo, webapp1:alpha). Em versões anteriores do Visual Studio, você podia usar a DockerfileTag propriedade para especificar o repositório e uma única tag, mas isso tinha limitações, por exemplo, não havia capacidade de especificar várias tags. A propriedade DockerfileTag está obsoleta, os projetos agora devem usar ContainerRepository e ContainerImageTag, e a versão atual também suporta ContainerImageTags várias tags.
Em versões anteriores do Visual Studio, a sintaxe era <DockerfileTag>webapp1:alpha</DockerfileTag>. O equivalente atual é <ContainerRepository>webapp1</ContainerRespository> e <ContainerImageTag>alpha</ContainerImageTag>, ou <ContainerImageTags>alpha;latest</ContainerImageTags> se você quiser várias tags.
Example
O arquivo de projeto a seguir mostra exemplos de algumas dessas configurações.
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>8c7ab9a5-d578-4c40-8b6d-54d174002229</UserSecretsId>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<!-- By default, Visual Studio uses the folder above the Dockerfile.
The path is relative to the Dockerfile, so here the context is
set to the same folder as the Dockerfile. -->
<ContainerBuildContext>.</ContainerBuildContext>
<!-- Set `docker run` arguments to mount a volume -->
<DockerfileRunArguments>-v $(MSBuildProjectDirectory)/host-folder:/container-folder:ro</DockerfileRunArguments>
<!-- Set `docker build` arguments to add a custom tag -->
<ContainerBuildArguments>-t contoso/front-end:v2.0</ContainerBuildArguments>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.20.1" />
</ItemGroup>
</Project>
Observação
O contexto de compilação, que você pode definir fornecendo um valor para ContainerBuildContext (ou DockerfileContext), geralmente é diferente no Visual Studio para projetos do que docker build (ou podman build) usa quando você o executa a partir da linha de comando. O desvio do comportamento da linha de comando de compilação é necessário para garantir que os artefatos de compilação no nível da solução possam ser incluídos.
Ao chamar docker build (ou podman build), você sempre especifica um contexto de compilação e, opcionalmente, pode especificar um caminho para o Dockerfile. O padrão é que o Dockerfile esteja na raiz do contexto, mas você pode usar o -f sinalizador para especificar um local alternativo. Por exemplo, você pode criar com docker build -f Dockerfile .. a partir do diretório do projeto ou docker build -f ProjectName/Dockerfile . do diretório da solução.
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>8c7ab9a5-d578-4c40-8b6d-54d174002229</UserSecretsId>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<!-- In CI/CD scenarios, you might need to change the context. By default, Visual Studio uses the
folder above the Dockerfile. The path is relative to the Dockerfile, so here the context is
set to the same folder as the Dockerfile. -->
<DockerfileContext>.</DockerfileContext>
<!-- Set `docker run` arguments to mount a volume -->
<DockerfileRunArguments>-v $(MSBuildProjectDirectory)/host-folder:/container-folder:ro</DockerfileRunArguments>
<!-- Set `docker build` arguments to add a custom tag -->
<DockerfileBuildArguments>-t contoso/front-end:v2.0</DockerfileBuildArguments>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.20.1" />
</ItemGroup>
</Project>
Observação
O contexto do Docker, que você pode definir fornecendo um valor para DockerfileContext, geralmente é diferente no Visual Studio para projetos destinados ao .NET Core (incluindo .NET 5 e posterior) do que docker build usa quando você o executa a partir da linha de comando. O desvio do comportamento de é necessário para garantir que os artefatos de construção no nível da docker build solução possam ser incluídos.
Ao chamar docker buildo , você sempre especifica um contexto de compilação e, opcionalmente, pode especificar um caminho para o Dockerfile. O padrão é que o Dockerfile esteja na raiz do contexto, mas você pode usar o -f sinalizador para especificar um local alternativo. Por exemplo, você pode criar com docker build -f Dockerfile .. a partir do diretório do projeto ou docker build -f ProjectName/Dockerfile . do diretório da solução.
Próximos passos
Para obter informações sobre as propriedades do MSBuild em geral, consulte Propriedades do MSBuild.
Consulte também
Propriedades de compilação do Docker Compose