Como executar um aplicativo .NET no Docker

Docker é um serviço de conteinerização, usado para executar aplicativos em ambientes isolados, empacotados com todas as dependências e códigos de que precisa para funcionar. Ele pode executar todos os tipos de aplicativos, incluindo programas baseados em . NET usando imagens de tempo de execução fornecidas pela Microsoft.
Dockerizing . NET
A Microsoft fornece imagens de base pré-construídas para a execução de aplicativos . NET. Você não precisará lidar com a instalação do . NET runtime ou SDK em seu contêiner do Docker, já que você pode simplesmente estender a imagem de base da Microsoft para a versão do . NET que seu aplicativo usa.

A menos que planeje implantar contêineres do Windows em um servidor Windows, você precisará usar o . NET Core ou . NET 5. O antigo . NET Framework runtime não é multiplataforma e não será executado em contêineres com Linux .
Se você não tiver o Docker instalado em sua máquina de desenvolvimento, precisará instalar o Docker Desktop para ter acesso à CLI. Se você estiver usando WSL no Windows, deverá habilitar o mecanismo baseado em WSL 2, que oferece melhor desempenho.

Para testar as coisas, vamos criar um novo aplicativo ASP. NET API. O mesmo procedimento geral se aplica a qualquer tipo de aplicativo, pois tudo que o Docker está fazendo é executar uma compilação sempre que você compila o contêiner e inicia seu aplicativo com um comando de ponto de entrada.

Crie um novo arquivo chamado Dockerfile na raiz do seu projeto, onde a sua solução está localizada. Cole a seguinte configuração:
DE mcr. microsoft. com/dotnet/core/sdk AS build-env WORKDIR / app # Copiar csproj e restaurar COPY * . csproj ./ RUN dotnet restore # Copiar tudo e construir COPY. ./ EXECUTAR dotnet publish -o out # Construir imagem de tempo de execução DE mcr. microsoft. com/dotnet/core/runtime WORKDIR / app COPY --from = build-env / app / out. ENTRYPOINT ["dotnet", "DockerTest. dll"]
Este Dockerfile extrai a imagem . NET Core SDK para realizar a compilação. Ele copia e restaura o . csproj, depois copia todo o resto e executa uma compilação. Em seguida, ele cria uma nova imagem a partir da imagem do . NET Runtime e copia os artefatos de compilação.
Finalmente, o ponto de entrada é definido aqui como dotnet DockerTest. dll. Isso iniciará o servidor da Web ASP. NET, embora você possa precisar alterar os parâmetros do seu aplicativo ou especificar um comando de ponto de entrada totalmente diferente.
Você pode testar a execução de seu contêiner com docker container run, passando-o no ID do contêiner de construção:
ID do contêiner de execução do contêiner do docker

Para um aplicativo ASP. NET, você &’ precisará abrir portas mapeando uma porta no host para uma porta no contêiner:
docker run -p 80:80 containerid
Você pode ler nosso guia para trabalhar com Docker e Dockerfiles para saber mais.
Nenhum comentário