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.
Com o Visual Studio, você pode facilmente criar, depurar e executar aplicativos .NET, ASP.NET e ASP.NET Core em contêineres e publicá-los no Registro de Contêiner do Azure, no Hub do Docker, no Serviço de Aplicativo do Azure ou em seu próprio Registro de Contêiner. Neste artigo, você publica um aplicativo ASP.NET Core no Registro de Contêiner do Azure.
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.
- Para publicar no Registro de Contêiner do Azure, é necessário ter uma assinatura do Azure. Inscreva-se para uma avaliação gratuita.
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.
- Para publicar no Registro de Contêiner do Azure, é necessário ter uma assinatura do Azure. Inscreva-se para uma avaliação gratuita.
Instalação e configuração
Para a instalação do Docker, primeiro revise as informações em Docker Desktop para Windows: O que saber antes de instalar. Em seguida, instale o Docker Desktop.
Instalação e configuração
Para a instalação do Docker, primeiro revise as informações em Docker Desktop para Windows: O que saber antes de instalar. Em seguida, instale o Docker Desktop.
Para usar o Podman como plataforma de contêiner, baixe o Podman Desktop para Windows e siga o tutorial no Podman para Windows para inicializar e iniciar uma máquina Podman.
Adicionar um projeto a um contêiner
Antes de criar o projeto do Visual Studio, verifique se o Docker Desktop está executando o tipo de contêineres (Windows ou Linux) que você pretende usar em seu projeto do Visual Studio.
Para alterar o tipo de contêiner usado pelo Docker Desktop, clique com o botão direito do mouse no ícone do Docker (baleia) na Barra de tarefas e escolha Alternar para contêineres Linux ou Alternar para contêineres do Windows.
Advertência
Se você alternar o tipo de contêiner depois de criar o projeto do Visual Studio, os arquivos de imagem do Docker podem falhar ao carregar.
Crie um novo projeto usando o modelo ASP.NET Core Web App .
Na tela Criar novo aplicativo Web , verifique se a caixa de seleção Habilitar suporte a contêiner está marcada.
A captura de tela mostra a versão mais recente com o .NET 8.0.
Selecione o tipo de contêiner desejado (Windows ou Linux) e selecione Criar.
Visão geral do Dockerfile
O Visual Studio cria um Dockerfile em seu projeto, que fornece a receita de como criar uma imagem final do Docker. Para obter mais informações, consulte a referência Dockerfile para obter detalhes sobre os comandos usados no Dockerfile.
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
# This stage is used when running from VS in fast mode (Default for Debug configuration)
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER $APP_UID
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
# This stage is used to build the service project
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["MyWepApp/MyWebApp.csproj", "MyWebApp/"]
RUN dotnet restore "./MyWebApp/./MyWebApp.csproj"
COPY . .
WORKDIR "/src/MyWebApp"
RUN dotnet build "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/build
# This stage is used to publish the service project to be copied to the final stage
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/publish /p:UseAppHost=false
# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyWebApp.dll"]
O Dockerfile anterior é baseado na imagem .NET 8 do catálogo de contêineres de sindicatos da Microsoft e inclui instruções para modificar a imagem base criando o projeto nomeado MyWebApp e adicionando-o ao contêiner. Se você estiver usando o .NET Framework, a imagem base será diferente.
Quando a caixa de seleção Configurar para HTTPS da caixa de diálogo do novo projeto é marcada, o Dockerfile expõe duas portas. Uma porta é usada para tráfego HTTP; a outra porta é usada para HTTPS. Se a caixa de seleção não estiver marcada, uma única porta (80 ou 8080) será exposta para o tráfego HTTP.
Ao direcionar o .NET 8 e versões posteriores, você tem o benefício de poder executar seu aplicativo com mais segurança, como um usuário normal, em vez de com permissões elevadas. O Dockerfile padrão gerado pelo Visual Studio para projetos .NET 8 é configurado para ser executado como um usuário normal. Para habilitar esse comportamento em um projeto existente, adicione a linha USER app ao Dockerfile na imagem base. Além disso, como a porta 80 é restrita para usuários normais, exponha as portas 8080 e 8081 em vez de 80 e 443. A porta 8080 é usada para tráfego HTTP e a porta 8081 é usada para HTTPS. Para ser executado como um usuário normal, o contêiner deve usar uma imagem base do .NET 8 e o aplicativo deve ser executado como um aplicativo .NET 8. Quando configurado corretamente, seu Dockerfile deve conter código como no exemplo a seguir:
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER app
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
Os modelos padrão para .NET 8 e posteriores usam a variável APP_UID de ambiente para a identidade do usuário normal.
Depurar
Selecione do Docker na lista suspensa de depuração na barra de ferramentas e comece a depurar o aplicativo. Você pode ver uma mensagem com um prompt sobre como confiar em um certificado; Escolha confiar no certificado para continuar.
A opção Ferramentas de contêiner na janela Saída mostra quais ações estão ocorrendo. Na primeira vez, pode demorar um pouco para baixar a imagem base, mas é mais rápido em execuções subsequentes.
Após a conclusão da compilação, o navegador abre e exibe a página inicial do aplicativo. Na barra de endereço do navegador, pode ver o URL localhost e o número de porta para depuração.
Observação
Se você precisar alterar as portas para depuração, poderá fazer isso no arquivo launchSettings.json. Consulte Configurações de inicialização de contêiner.
Janela de Contentores
Você pode usar a janela Contêineres para visualizar contêineres em execução em sua máquina e outras imagens disponíveis.
Abra a janela Contêineres usando a caixa de pesquisa no IDE (pressione Ctrl+Q para usá-la), digite containere escolha a janela Contêineres na lista.
Você pode montar a janela Contêineres em um local conveniente, como abaixo do editor, movendo-a e seguindo as guias de posicionamento da janela.
Na janela, localize o seu contêiner e navegue por cada separador para visualizar as variáveis de ambiente, configurações de portas, logs e o sistema de ficheiros.
Para obter mais informações, consulte Usar a janela Contêineres.
Publicar imagens do Docker
Quando o ciclo de desenvolvimento e depuração do aplicativo estiver concluído, você poderá criar uma imagem de produção do aplicativo.
Altere a lista suspensa de configuração para Release e compile a aplicação.
Clique com o botão direito do mouse em seu projeto no Gerenciador de Soluções e escolha Publicar.
Na caixa de diálogo Publicar , selecione a guia Registro de contêiner do Docker .
Escolha Criar Novo Registro de Contêiner do Azure.
Preencha os valores desejados em Criar um novo Registro de Contêiner do Azure.
Cenário Valor sugerido Descrição Prefixo DNS Nome globalmente exclusivo Nome que identifica exclusivamente seu registro de contêiner. Subscrição Escolha a sua subscrição A assinatura do Azure a ser usada. Grupo de Recursos meuGrupoDeRecursos Nome do grupo de recursos no qual criar seu registro de contêiner. Escolha Novo para criar um novo grupo de recursos. SKU Standard Camada de serviço do registro de contêiner Localização do Registo Uma localização perto de si Escolha um local em uma região perto de você ou perto de outros serviços que possam usar seu registro de contêiner.
Selecione Criar. A caixa de diálogo Publicar agora mostra o registro criado.
Escolha Concluir para concluir o processo de publicação da imagem do contêiner no registro recém-criado no Azure.
Próximos passos
Agora você pode extrair o contêiner do Registro para qualquer host capaz de executar imagens do Docker, por exemplo, Instâncias de Contêiner do Azure.
Adicionar um projeto a um contêiner
Antes de criar o projeto do Visual Studio, verifique se o Docker Desktop está executando o tipo de contêineres (Windows ou Linux) que você pretende usar em seu projeto do Visual Studio.
Para alterar o tipo de contêiner usado pelo Docker Desktop, clique com o botão direito do mouse no ícone do Docker (baleia) na Barra de tarefas e escolha Alternar para contêineres Linux ou Alternar para contêineres do Windows.
Advertência
Se você alternar o tipo de contêiner depois de criar o projeto do Visual Studio, os arquivos de imagem do Docker podem falhar ao carregar.
Crie um novo projeto usando o modelo ASP.NET Core Web App .
Na tela Criar novo aplicativo Web , verifique se a caixa de seleção Habilitar suporte a contêiner está marcada.
A captura de tela mostra a versão mais recente com o .NET 8.0.
Selecione o tipo de contêiner desejado (Windows ou Linux) e selecione Criar.
Visão geral do Dockerfile
O Visual Studio cria um Dockerfile em seu projeto, que fornece a receita de como criar uma imagem final do Docker. Para obter mais informações, consulte a referência Dockerfile para obter detalhes sobre os comandos usados no Dockerfile.
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
# This stage is used when running from VS in fast mode (Default for Debug configuration)
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER $APP_UID
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
# This stage is used to build the service project
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["MyWepApp/MyWebApp.csproj", "MyWebApp/"]
RUN dotnet restore "./MyWebApp/./MyWebApp.csproj"
COPY . .
WORKDIR "/src/MyWebApp"
RUN dotnet build "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/build
# This stage is used to publish the service project to be copied to the final stage
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/publish /p:UseAppHost=false
# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyWebApp.dll"]
O Dockerfile anterior é baseado na imagem .NET 8 do catálogo de contêineres de sindicatos da Microsoft e inclui instruções para modificar a imagem base criando o projeto nomeado MyWebApp e adicionando-o ao contêiner.
Quando a caixa de seleção Configurar para HTTPS da caixa de diálogo do novo projeto é marcada, o Dockerfile expõe duas portas. Uma porta é usada para tráfego HTTP; a outra porta é usada para HTTPS. Se a caixa de seleção não estiver marcada, uma única porta (80 ou 8080) será exposta para o tráfego HTTP.
Ao direcionar o .NET 8 e versões posteriores, você tem o benefício de poder executar seu aplicativo com mais segurança, como um usuário normal, em vez de com permissões elevadas. O Dockerfile padrão gerado pelo Visual Studio para projetos .NET 8 é configurado para ser executado como um usuário normal. Para habilitar esse comportamento em um projeto existente, adicione a linha USER app ao Dockerfile na imagem base. Além disso, como a porta 80 é restrita para usuários normais, exponha as portas 8080 e 8081 em vez de 80 e 443. A porta 8080 é usada para tráfego HTTP e a porta 8081 é usada para HTTPS. Para ser executado como um usuário normal, o contêiner deve usar uma imagem base do .NET 8 e o aplicativo deve ser executado como um aplicativo .NET 8. Quando configurado corretamente, seu Dockerfile deve conter código como no exemplo a seguir:
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER app
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
Os modelos padrão usam a variável APP_UID de ambiente para a identidade do usuário normal.
Depurar
Selecione do Docker na lista suspensa de depuração na barra de ferramentas e comece a depurar o aplicativo. Você pode ver uma mensagem com um prompt sobre como confiar em um certificado; Escolha confiar no certificado para continuar.
A opção Ferramentas de contêiner na janela Saída mostra quais ações estão ocorrendo. Na primeira vez, pode demorar um pouco para baixar a imagem base, mas é mais rápido em execuções subsequentes.
Após a conclusão da compilação, o navegador abre e exibe a página inicial do aplicativo. Na barra de endereço do navegador, pode ver o URL localhost e o número de porta para depuração.
Observação
Se você precisar alterar as portas para depuração, poderá fazer isso no arquivo launchSettings.json. Consulte Configurações de inicialização de contêiner.
Janela de Contentores
Você pode usar a janela Contêineres para visualizar contêineres em execução em sua máquina e outras imagens disponíveis.
Abra a janela Contêineres usando a caixa de pesquisa no IDE (pressione Ctrl+Q para usá-la), digite containere escolha a janela Contêineres na lista.
Você pode montar a janela Contêineres em um local conveniente, como abaixo do editor, movendo-a e seguindo as guias de posicionamento da janela.
Na janela, localize o seu contêiner e navegue por cada separador para visualizar as variáveis de ambiente, configurações de portas, logs e o sistema de ficheiros.
Para obter mais informações, consulte Usar a janela Contêineres.
Publicar imagens do Docker
Quando o ciclo de desenvolvimento e depuração do aplicativo estiver concluído, você poderá criar uma imagem de produção do aplicativo.
Altere a lista suspensa de configuração para Release e compile a aplicação.
Clique com o botão direito do mouse em seu projeto no Gerenciador de Soluções e escolha Publicar.
Na caixa de diálogo Publicar , selecione a guia Registro de contêiner do Docker .
Escolha Criar Novo Registro de Contêiner do Azure.
Preencha os valores desejados em Criar um novo Registro de Contêiner do Azure.
Cenário Valor sugerido Descrição Prefixo DNS Nome globalmente exclusivo Nome que identifica exclusivamente seu registro de contêiner. Subscrição Escolha a sua subscrição A assinatura do Azure a ser usada. Grupo de Recursos meuGrupoDeRecursos Nome do grupo de recursos no qual criar seu registro de contêiner. Escolha Novo para criar um novo grupo de recursos. SKU Standard Camada de serviço do registro de contêiner Localização do Registo Uma localização perto de si Escolha um local em uma região perto de você ou perto de outros serviços que possam usar seu registro de contêiner.
Selecione Criar. A caixa de diálogo Publicar agora mostra o registro criado.
Escolha Concluir para concluir o processo de publicação da imagem do contêiner no registro recém-criado no Azure.
Próximos passos
Agora você pode extrair o contêiner do Registro para qualquer host capaz de executar imagens do Docker, por exemplo, Instâncias de Contêiner do Azure.