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.
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 '.
Depois de criar um novo projeto, ele deverá ficar assim:
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.
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.
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:
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'.
Na próxima tela, basta clicar no botão ‘Criar’.
Agora podemos criar um Web App. Navegue até a página ‘Criar recurso’ e encontre WebApp. Clique no botão 'Criar'.
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.
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’:
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.
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
.
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.
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:
Quando terminar, você pode navegar até o ‘Centro de Implantação’ e ver os logs da seguinte forma:
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.