Visão geral: Aplicativo Web Python em contêineres no Azure com MongoDB
Este tutorial mostra como colocar em contêiner um aplicativo Web Python e implantá-lo no Azure. O aplicativo Web de contêiner único é hospedado no Serviço de Aplicativo do Azure e usa o MongoDB para o Azure Cosmos DB para armazenar dados. O Aplicativo Web do Serviço de Aplicativo para Contêineres permite que você se concentre na composição de seus contêineres sem se preocupar em gerenciar e manter um orquestrador de contêineres subjacente. Ao criar aplicativos Web, o Serviço de Aplicativo do Azure é uma boa opção para dar seus primeiros passos com contêineres. Para obter mais informações sobre como usar contêineres no Azure, consulte Comparando opções de contêiner do Azure.
Neste tutorial, você irá:
Crie e execute um contêiner do Docker localmente. Esta etapa é opcional.
Crie uma imagem de contêiner do Docker diretamente no Azure.
Configure um Serviço de Aplicativo para criar um aplicativo Web com base na imagem de contêiner do Docker.
Após este tutorial, você terá a base para Integração Contínua (CI) e Implantação Contínua (CD) de um aplicativo Web Python no Azure.
Visão geral do serviço
O diagrama de serviço que dá suporte a este tutorial mostra dois ambientes (ambiente do desenvolvedor e Azure) e os diferentes serviços do Azure usados no tutorial.
Os componentes que suportam este tutorial e mostrados no diagrama acima são:
Serviço de Aplicativo do Azure
A funcionalidade subjacente do Serviço de Aplicativo que habilita a conteinerização é o Aplicativo Web para Contêineres. O Serviço de Aplicativo do Azure usa a tecnologia de contêiner do Docker para hospedar imagens internas e imagens personalizadas. Neste tutorial, você criará uma imagem a partir do código Python e a implantará no Aplicativo Web para Contêineres.
O Web App for Containers usa um webhook no Registro para ser notificado sobre novas imagens. Um push de uma nova imagem para o repositório aciona o Serviço de Aplicativo para extrair a imagem e reiniciar.
Registro de Contêiner do Azure
O Registro de Contêiner do Azure permite que você trabalhe com imagens do Docker e seus componentes no Azure. Ele fornece um registro próximo às suas implantações no Azure e que lhe dá controle sobre o acesso, tornando possível usar seus grupos e permissões do Microsoft Entra.
Neste tutorial, a origem do Registro é o Registro de Contêiner do Azure, mas você também pode usar o Hub do Docker ou um registro privado com pequenas modificações.
-
O Azure Cosmos DB para MongoDB é um banco de dados NoSQL usado neste tutorial para armazenar dados.
O acesso ao recurso do Azure Cosmos DB é feito por meio de uma cadeia de conexão, que é passada como uma variável de ambiente para o aplicativo em contêiner.
Autenticação
Neste tutorial, você criará uma imagem do Docker (localmente ou diretamente no Azure) e a implantará no Serviço de Aplicativo do Azure. O Serviço de Aplicativo extrai a imagem de contêiner de um repositório do Registro de Contêiner do Azure.
O Serviço de Aplicativo usa a identidade gerenciada para extrair imagens do Registro de Contêiner do Azure. A identidade gerenciada permite que você conceda permissões ao aplicativo Web para que ele possa acessar outros recursos do Azure sem a necessidade de especificar credenciais. Especificamente, este tutorial usa uma identidade gerenciada atribuída ao sistema. A identidade gerenciada é configurada durante a instalação do Serviço de Aplicativo para usar uma imagem de contêiner do Registro.
O aplicativo Web de exemplo tutorial usa o MongoDB para armazenar dados. O código de exemplo se conecta ao Azure Cosmos DB por meio de uma cadeia de conexão.
Pré-requisitos
Para concluir este tutorial, você precisará de:
Uma conta do Azure onde você pode criar:
- Registro de Contêiner do Azure
- Serviço de Aplicativo do Azure
- Azure Cosmos DB para MongoDB (ou acesso a um equivalente). Para criar um banco de dados do Azure Cosmos DB para MongoDB, recomendamos que você siga as etapas na parte 2 deste tutorial.
Visual Studio Code ou CLI do Azure, dependendo da ferramenta que você usará.
Pacotes Python:
Docker instalado localmente se você quiser executar o contêiner localmente.
Aplicativo de exemplo
O aplicativo de exemplo Python é um aplicativo de revisão de restaurante que salva dados de restaurante e revisão no MongoDB. Para obter um exemplo de um aplicativo Web usando PostgreSQL, consulte Criar e implantar um aplicativo Web Flask no Azure com uma identidade gerenciada.
No final do tutorial, você terá um aplicativo de revisão de restaurante implantado e em execução no Azure que se parece com a captura de tela abaixo.