paint-brush
Como implantar um aplicativo Web ASP.NET Core no Azure a partir da imagem do Dockerpor@igorlopushko
956 leituras
956 leituras

Como implantar um aplicativo Web ASP.NET Core no Azure a partir da imagem do Docker

por Igor Lopushko6m2024/01/19
Read on Terminal Reader

Muito longo; Para ler

Neste artigo, darei um guia detalhado sobre como criar um aplicativo Web ASP.NET Core simples, criar uma imagem docker com seu aplicativo e a maneira mais fácil de implantá-lo no Azure. No final, você terá um bom entendimento de como implantar sua aplicação web e torná-la acessível para todo o mundo.
featured image - Como implantar um aplicativo Web ASP.NET Core no Azure a partir da imagem do Docker
Igor Lopushko HackerNoon profile picture

Introdução

Como desenvolvedores web, costumávamos encontrar hospedagem adequada para nossos aplicativos com todas as complicações de implantação e manutenção. Mas agora vivemos em uma nova era em que os provedores de nuvem podem fazer muitas coisas para nós quase sem nenhum custo. Quanto aos desenvolvedores .NET, o Microsoft Azure parece a escolha mais natural para hospedar aplicativos da web.


Docker é outra tecnologia que permite abstrair a plataforma e o ambiente em que seu aplicativo está sendo executado.


Neste artigo, darei um guia detalhado sobre como criar um aplicativo Web ASP.NET Core simples, criar uma imagem docker com seu aplicativo e a maneira mais fácil de implantá-lo no Azure. No final, você terá um bom entendimento de como implantar sua aplicação web e torná-la acessível para todo o mundo.

1. Crie um aplicativo Web ASP.NET Core

Usarei o JetBrains Rider para fins de desenvolvimento neste artigo. Mas você pode usar qualquer ferramenta que desejar.


Primeiro, você precisa criar um novo projeto. Vamos chamá-lo de simples ' webapp '.

Criar nova solução


Depois de criar um novo projeto, ele deverá ficar assim:

Estrutura do projeto


2. Crie uma imagem Docker

Sem nenhuma alteração no projeto, vamos focar no Dockerfile . Modifique-o conforme o exemplo a seguir:

 FROM mcr.microsoft.com/dotnet/aspnet:6.0 as base WORKDIR /app EXPOSE 8080 ENV ASPNETCORE_URLS http://+:8080 FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build COPY . /src WORKDIR /src RUN dotnet build "webapp.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "webapp.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "webapp.dll"]


Você precisa prestar atenção nas linhas EXPOSE 8080 e ENV ASPNETCORE_URLS http://+:8080 para poder se conectar via HTTP ao contêiner docker.


Crie uma imagem docker na linha de comando. Você precisa navegar até o diretório do projeto webapp e executar o seguinte comando:

 DOCKER_BUILDKIT=1 docker buildx build --platform linux/amd64 --tag drmoz/webapp:latest .


Estou executando-o no Mac M1 e preciso especificar o parâmetro --platform explicitamente para ser compatível com a implantação do Azure. Também tenho que ativar o Docker Buildkit especificando o parâmetro DOCKER_BUILDKIT=1 e usando buildx para poder construir uma imagem para outra arquitetura.


Se você estiver executando-o na plataforma Intel x86/x64, poderá usar o comando docker build sem a necessidade de especificar o parâmetro --platform e ativar buildx .


Você pode marcar sua imagem de maneira diferente, mas como vou usar o Docker Hub, preciso especificar o nome da minha conta: drmoz como parte da tag de imagem drmoz/webapp:latest .


Quando uma imagem é construída, você pode verificar se ela está presente no Docker executando o seguinte comando:

 docker images


Deveria estar na lista:

 REPOSITORY TAG IMAGE ID CREATED SIZE drmoz/webapp latest 0cfac748256b 37 minutes ago 216MB


Vamos executar o contêiner docker para verificar se a imagem recém-criada funciona bem. Execute o comando docker run para iniciar um contêiner:

 docker run -p 5555:8080 drmoz/webapp:latest


Especifique o parâmetro -p para mapear a porta 8080 dentro do contêiner para a porta 5555 da sua máquina local. Além disso, especifique o nome da imagem para criar o contêiner. No meu caso, é drmoz/webapp:latest .


Agora, você pode navegar em seu navegador http://localhost:5555 para ver a página inicial do ASP.NET Core Web App.

Aplicativo Web ASP.NET Core: página inicial



Precisamos enviar uma imagem para o Docker Hub . Antes disso, você deve se registrar no Docker Registry e criar um repositório. Clique no botão ‘ Criar repositório ’ no canto direito da página inicial.

Novo repositório do Docker Hub


Especifique o campo Repository Name e mantenha a visibilidade do repositório Public .


Na linha de comando, você deve fazer login no registro do Docker Hub:

 docker login


Depois disso, você poderá enviar uma imagem recém-criada para o registro:

 docker push drmoz/webapp:latest


Navegue até o repositório e você verá as informações sobre a imagem:

Repositório DockerHub


3. Crie um aplicativo Web no Azure

Agora, estamos prontos para implantar nosso aplicativo Web ASP.NET Core no Azure. Vamos fazer login no Portal do Azure e criar um novo grupo de recursos. Especifique o nome do grupo de recursos como ' webapp-rg ' e clique no botão 'Revisar + criar'.


Criar grupo de recursos: guia Básico


Na próxima tela, basta clicar no botão ‘Criar’.

Criar grupo de recursos: guia Revisão + criação


Agora podemos criar um Web App. Navegue até a página ‘Criar recurso’ e encontre WebApp. Clique no botão 'Criar'.

Criar aplicativo Web: guia Básico

Você precisa especificar o Resource Group que criamos anteriormente. Além disso, especifique um Name exclusivo para o aplicativo Web. Selecione 'Docker Container' no campo Publish . Posteriormente, poderemos especificar qual imagem Docker usar.


Selecione qualquer opção adequada na seção Pricing plans , mas recomendo usar um pneu F1 grátis para fins de teste. Navegue até a guia Docker.


Criar aplicativo Web: guia Docker


Nesta guia, selecione 'Docker Hub' no campo Image Source . Selecione 'Público' no campo Access Type e especifique o valor da Image and tag com o nome da imagem que enviamos para o Docker Hub. Navegue até a guia ‘Revisar + criar’. Nesta guia, clique no botão ‘Criar’:

Criar aplicativo Web: revisar + guia criar


Quando o novo recurso for implantado, você será perguntado se deseja navegar até esse recurso; apenas faça. Você poderá ver informações sobre o Web App.

Informações de recursos do aplicativo Web


Clique no botão 'Navegar' para abrir um aplicativo da web implantado. Se tudo correr corretamente, você deverá ver a página inicial do ASP.NET Core Web App semelhante à que viu em seu navegador navegando http://localhost:5555 .

Habilite a implantação contínua

Se você navegar até as configurações do 'Centro de implantação' e ativar 'Continua a implantação', poderá reimplantar sua imagem sempre que enviar uma nova para o Docker Hub. Dessa forma, você pode fazer alterações em seu código, enviá-lo para o Docker Hub com uma nova imagem e ver as alterações em minutos no Azure.

Aplicativo Web – Centro de implantação

Solução de problemas do aplicativo Web do Azure

Para poder ver os logs de implantação e identificar problemas, você precisa habilitar o salvamento de logs no sistema de arquivos no capítulo 'Logs do Serviço de Aplicativo' da seguinte forma:

Aplicativo Web – Logs do Serviço de Aplicativo


Quando terminar, você pode navegar até o ‘Centro de Implantação’ e ver os logs da seguinte forma:

Aplicativo Web – Centro de implantação


Resumo

Se você chegar a este ponto, você conseguiu criar um aplicativo web ASP.NET Core; empacote-o na imagem do Docker e implante-o no Azure. Hoje em dia, a tecnologia facilita a vida e agiliza o processo de desenvolvimento. Você pode ver como é fácil implantar seu aplicativo no provedor de nuvem e expô-lo ao mundo inteiro, realizar alguns testes e ver o resultado do seu trabalho.


Agora você pode mergulhar nos detalhes dos provedores de nuvem do Azure usando a documentação da Microsoft. Além disso, dê uma olhada na documentação do Docker para uma compreensão mais profunda desta tecnologia. Espero que possa ser útil.