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.
Se você quiser criar um projeto de contêiner com um Dockerfile fora do Visual Studio, você pode usar docker build (ou podman build), ou dotnet publish /t:PublishContainer para compilar a partir da linha de comando.
Se você estiver usando o tipo de compilação do SDK do .NET, você não tem um Dockerfile, então você não pode usar docker build ou podman build; em vez disso, usar dotnet publish /t:PublishContainer para compilar na linha de comando.
Se você quiser criar um projeto de contêiner com um Dockerfile fora do Visual Studio, você pode usar docker build ou dotnet publish /t:PublishContainer compilar a partir da linha de comando.
Se você estiver usando o tipo de compilação do SDK do .NET, não terá um Dockerfile, portanto, não poderá usar docker build; em vez disso, use dotnet publish /t:PublishContainer para compilar na linha de comando.
Pré-requisitos
- Docker Desktop ou Podman Desktop.
- Visual Studio ou, para suporte ao Podman, Visual Studio 2026, com a carga de trabalho de desenvolvimento ASP.NET e web, carga de trabalho de desenvolvimento do Azure e/ou carga de trabalho de desenvolvimento de desktop .NET instalada.
Pré-requisitos
- Área de trabalho do Docker.
- Visual Studio com a carga de trabalho de desenvolvimento ASP.NET e Web, carga de trabalho de desenvolvimento do Azure e/ou carga de trabalho de desenvolvimento de área de trabalho .NET instalada.
Usar a compilação do Docker
Para criar uma solução conteinerizada a partir da linha de comando, pode-se normalmente usar o comando docker build <context> para cada projeto na solução. Você fornece o argumento do contexto de construção. O de contexto de compilação para um Dockerfile é a pasta na máquina local que é usada como a pasta de trabalho para gerar a imagem. Por exemplo, é a pasta da qual você copia arquivos quando copia para o contêiner. Em projetos .NET Core, o padrão é usar a pasta que contém o arquivo de solução (.sln ou .slnx). Expresso como um caminho relativo, esse argumento é normalmente ".." para um Dockerfile em uma pasta de projeto e o arquivo de solução em sua pasta pai.
docker build -f Dockerfile ..
Para projetos do .NET Framework, o contexto de compilação padrão é a pasta do projeto, não a pasta da solução.
Você pode definir o contexto de compilação no arquivo de projeto definindo a propriedade DockerfileContext. Por exemplo
<PropertyGroup>
<DockerfileContext>contextfolder</DockerfileContext>
</PropertyGroup>
Usar a compilação do Docker ou a compilação do Podman
Para criar uma solução conteinerizada a partir da linha de comando, você geralmente pode usar o comando docker build <context> (ou podman build <context>) para cada projeto na solução. Você fornece o argumento do contexto de construção. O de contexto de compilação para um Dockerfile é a pasta na máquina local que é usada como a pasta de trabalho para gerar a imagem. Por exemplo, é a pasta da qual você copia arquivos quando copia para o contêiner. Em projetos .NET Core, o padrão é usar a pasta que contém o arquivo de solução (.sln ou .slnx). Expresso como um caminho relativo, esse argumento é normalmente ".." para um Dockerfile em uma pasta de projeto e o arquivo de solução em sua pasta pai.
docker build -f Dockerfile ..
podman build -f Dockerfile ..
Você pode definir o contexto de compilação no arquivo de projeto definindo a propriedade ContainerBuildContext. Por exemplo
<PropertyGroup>
<ContainerBuildContext>contextfolder</ContainerBuildContext>
</PropertyGroup>
Os caminhos relativos no Dockerfile são relativos ao contexto de compilação, portanto, se você alterar o contexto, certifique-se de atualizar os caminhos relativos de acordo.
Com o Visual Studio 17.11 e posterior, quando você adiciona suporte ao Docker a um projeto, pode especificar uma pasta para o contexto de compilação. Se quiser alterar o contexto de construção, pode eliminar o Dockerfile (se este não tiver outras alterações que pretende manter) e executar novamente Adicionar suporte para Docker, desta vez especificando o novo contexto de construção. O novo Dockerfile terá caminhos relativos atualizados para corresponder ao novo contexto de compilação.
Ao adicionar suporte a contêiner a um projeto, você pode especificar uma pasta para o contexto de compilação. Se quiser alterar o contexto de compilação, você pode excluir o Dockerfile (se ele não tiver outras alterações que você deseja manter) e executar novamente Add Container Support, desta vez especificando o novo contexto de compilação. O novo Dockerfile terá caminhos relativos atualizados para corresponder ao novo contexto de compilação.
Usar o MSBuild
Observação
Esta seção descreve como você pode personalizar seus contêineres ao escolher o tipo de compilação de contêiner do Dockerfile. Se você estiver usando o tipo de compilação do SDK do .NET, as opções de personalização serão diferentes e as informações neste artigo não serão aplicáveis. Em vez disso, consulte Containerize uma aplicação .NET com dotnet publish.
Dockerfiles criados pelo Visual Studio para projetos do .NET Framework (e para projetos .NET Core criados com versões do Visual Studio anteriores ao Visual Studio 2017 Update 4) não são Dockerfiles de vários estágios. As etapas nesses Dockerfiles não compilam seu código. Em vez disso, quando o Visual Studio cria um .NET Framework Dockerfile, ele primeiro compila seu projeto usando MSBuild. Quando isso for bem-sucedido, o Visual Studio compilará o Dockerfile, que simplesmente copia a saída de compilação do MSBuild para a imagem resultante do Docker. Como as etapas para compilar seu código não estão incluídas no Dockerfile, você não pode criar Dockerfiles do .NET Framework usando docker build da linha de comando. Você deve usar o MSBuild para criar esses projetos.
Para criar uma imagem para um único projeto de contêiner do Docker, você pode usar o MSBuild com a opção de comando /t:ContainerBuild. Este comando diz ao MSBuild para compilar o destino ContainerBuild em vez de o destino padrão Build. Por exemplo:
MSBuild MyProject.csproj /t:ContainerBuild /p:Configuration=Release
Você vê uma saída semelhante à que você vê na janela Output quando você cria sua solução a partir do IDE do Visual Studio. Sempre use /p:Configuration=Release, pois nos casos em que o Visual Studio usa a otimização de compilação de vários estágios, os resultados ao criar a configuração de depuração para podem não ser os esperados. Consulte Personalizar imagens de contêiner para depuração.
Se você estiver usando um projeto Docker Compose, use este comando para criar imagens:
msbuild /p:SolutionPath=<solution-name>.sln /p:Configuration=Release docker-compose.dcproj
Para exibir os logs do MSBuild, consulte Obtendo logs de compilação com o MSBuild.
Compilar a partir da linha de comando
O Visual Studio usa o Modo Rápido (se habilitado) para produzir uma imagem de contêiner configurada para funcionar melhor para desenvolvimento e depuração, portanto, não recomendamos copiar os comandos de compilação do docker da janela Saída após uma compilação do Modo Rápido. Para criar uma imagem padrão sem otimizações fora do padrão, você pode clicar com o botão direito do mouse no Dockerfile e escolher a opção Build Docker image .
O Visual Studio usa o Modo Rápido (se habilitado) para produzir uma imagem de contêiner configurada para funcionar melhor para desenvolvimento e depuração, portanto, não recomendamos copiar os docker build comandos ou podman build da janela Saída após uma compilação do Modo Rápido. Para criar uma imagem padrão sem otimizações fora do padrão, clique com o botão direito do mouse no Dockerfile e escolha a opção Construir imagem .
Visual Studio usa a tag dev para designar imagens que preparou especialmente para otimizar o tempo de inicialização durante a depuração. No entanto, essas imagens não devem ser usadas fora do contexto do Visual Studio. Esta etiqueta indica que as imagens possuem modificações e personalizações não padrão, por exemplo, para suportar a depuração no modo Rápido. Consulte Personalizar contêineres do Docker no Visual Studio.