Tutorial: Aprenda conceitos de visão geral para implantar um aplicativo Web Python em Aplicativos de Contêiner do Azure
Esta série de tutoriais mostra como colocar em contêiner um aplicativo Web Python e implantá-lo em Aplicativos de Contêiner do Azure. Um aplicativo Web de exemplo é conteinerizado e a imagem do Docker é armazenada em Registro de Contêiner do Azure. Os Aplicativos de Contêiner do Azure estão configurados para extrair a imagem do Docker do Registro de Contêiner e criar um contêiner. A aplicação de exemplo conecta-se ao Banco de Dados do Azure para PostgreSQL para demonstrar a comunicação entre Aplicações de Contentor e outros recursos do Azure.
Há várias opções para criar e implantar aplicativos Web Python nativos da nuvem e em contêineres no Azure. Esta série de tutoriais aborda os Aplicativos de Contêiner do Azure. O Container Apps é bom para executar contêineres de uso geral, especialmente para aplicativos que abrangem muitos microsserviços implantados em contêineres.
Nesta série de tutoriais, você cria um contêiner. Para implantar um aplicativo Web Python como um contêiner no Serviço de Aplicativo do Azure, consulte aplicativo Web Python em contêiner no Azure com MongoDB.
Os procedimentos desta série de tutoriais orientam você a concluir estas tarefas:
- Construa uma imagem Docker a partir de uma aplicação web Python e armazene a imagem no Azure Container Registry.
- Configure de Aplicativos de Contêiner do Azure para hospedar a imagem do Docker.
- Configure de Ações do GitHub para atualizar o contêiner com uma nova imagem do Docker acionada por alterações no repositório do GitHub. Esta etapa é opcional.
- Configure a integração contínua e a entrega contínua (CI/CD) de um aplicativo Web Python para o Azure.
Nesta primeira parte da série, você aprende conceitos fundamentais para implantar um aplicativo Web Python em Aplicativos de Contêiner do Azure.
Visão geral do serviço
O diagrama a seguir mostra como você usará seu ambiente local, repositórios do GitHub e serviços do Azure nesta série de tutoriais.
O diagrama inclui estes componentes:
Aplicações de Contentor do Azure:
Os Aplicativos de Contêiner do Azure permitem que você execute microsserviços e aplicativos em contêineres em uma plataforma sem servidor. Uma plataforma sem servidor significa que você aproveita os benefícios de executar contêineres com configuração mínima. Com os Aplicativos de Contêiner do Azure, seus aplicativos podem ser dimensionados dinamicamente com base em características como tráfego HTTP, processamento controlado por eventos ou carga de CPU ou memória.
Os Aplicativos de Contêiner extraem imagens do Docker do Registro de Contêiner do Azure. As alterações nas imagens de contêiner acionam uma atualização para o contêiner implantado. Você também pode configurar as Ações do GitHub para disparar atualizações.
Registo de Contentores do Azure:
O Registro de Contêiner do Azure permite que você trabalhe com imagens do Docker no Azure. Como o Registro de Contêiner está próximo de suas implantações no Azure, você tem controle sobre o acesso. Você pode usar seus grupos e permissões do Microsoft Entra para controlar o acesso às imagens do Docker.
Nesta série de tutoriais, a fonte do Registro é o Registro de Contêiner do Azure. Mas você também pode usar o Docker Hub ou um registro privado com pequenas modificações.
Banco de Dados do Azure para PostgreSQL:
O código de exemplo armazena dados do aplicativo em um banco de dados PostgreSQL. A aplicação de contêiner conecta-se ao PostgreSQL usando uma identidade gerida atribuída pelo utilizador. As informações de conexão são armazenadas em variáveis de ambiente configuradas explicitamente ou por meio de um conector de serviço do Azure.
-
O código de exemplo para esta série de tutoriais está em um repositório GitHub que você bifurca e clona localmente. Para configurar um fluxo de trabalho de CI/CD com de Ações do GitHub, você precisa de uma conta do GitHub.
Você ainda pode acompanhar esta série de tutoriais sem uma conta do GitHub, se trabalhar localmente ou em do Azure Cloud Shell para criar a imagem de contêiner a partir do repositório de código de exemplo.
Revisões e CI/CD
Para fazer alterações de código e enviá-las por push para um contêiner, crie uma nova imagem do Docker com suas alterações. Em seguida, envie a imagem para o Registro de contêineres e crie uma nova revisão do aplicativo de contêiner.
Para automatizar esse processo, uma etapa opcional na série de tutoriais mostra como criar um pipeline de CI/CD usando as Ações do GitHub. O pipeline cria e implanta automaticamente seu código em Aplicativos de Contêiner sempre que uma nova confirmação é enviada por push para o repositório do GitHub.
Autenticação e segurança
Nesta série de tutoriais, você cria uma imagem de contêiner do Docker diretamente no Azure e a implanta nos Aplicativos de Contêiner do Azure. As Aplicações de Contêiner são executadas no contexto de um ambiente de , que é suportado por uma rede virtual Azure . As redes virtuais são um bloco de construção fundamental para sua rede privada no Azure. Os Aplicativos de Contêiner permitem que você exponha seu aplicativo de contêiner à Web pública habilitando a entrada.
Para configurar o CI/CD, autorize os Aplicativos de Contêiner do Azure como um aplicativo OAuth para sua conta do GitHub. Como um aplicativo OAuth, os Aplicativos de Contêiner gravam um arquivo de fluxo de trabalho de Ações do GitHub em seu repositório com informações sobre recursos e trabalhos do Azure para atualizá-los. O fluxo de trabalho atualiza os recursos do Azure usando as credenciais de uma entidade de serviço do Microsoft Entra (ou uma existente) com acesso baseado em função para Aplicativos de Contêiner e um nome de usuário e senha para o Registro de Contêiner do Azure. As credenciais são armazenadas com segurança no repositório GitHub.
Finalmente, o aplicativo Web de exemplo nesta série de tutoriais armazena dados em um banco de dados PostgreSQL. O código de exemplo se conecta ao PostgreSQL por meio de uma cadeia de conexão. Quando o aplicativo está sendo executado no Azure, ele se conecta ao banco de dados PostgreSQL usando uma identidade gerenciada atribuída pelo usuário. O código usa DefaultAzureCredential
para atualizar dinamicamente a senha na cadeia de conexão com um token de acesso do Microsoft Entra durante o tempo de execução. Esse mecanismo evita a necessidade de codificar a senha na cadeia de conexão ou em uma variável de ambiente e fornece uma camada extra de segurança.
A série de tutoriais orienta você na criação da identidade gerenciada e concedendo-lhe uma função e permissões PostgreSQL apropriadas para que ele possa acessar e atualizar o banco de dados. Durante a configuração de Aplicativos de Contêiner, a série de tutoriais orienta você na configuração da identidade gerenciada no aplicativo e na configuração de variáveis de ambiente que contêm informações de conexão para o banco de dados. Você também pode usar um conector de serviço do Azure para realizar a mesma coisa.
Pré-requisitos
Para concluir esta série de tutoriais, você precisa:
Uma conta do Azure onde você pode criar:
- Uma instância do Registro de Contêiner do Azure.
- Um ambiente de Aplicativos de Contêiner do Azure.
- Uma instância de base de dados do Azure para PostgreSQL.
Visual Studio Code ou o Azure CLI, dependendo da ferramenta que utiliza:
- Para o Visual Studio Code, precisas da extensão Container Apps.
- Você pode usar a CLI do Azure por meio do Azure Cloud Shell.
Pacotes Python:
- pyscopg2-binary para conectar ao PostgreSQL.
- Flask ou Django como um framework web.
Aplicativo de exemplo
O aplicativo de exemplo Python é um aplicativo de revisão de restaurante que salva dados de restaurantes e avaliações no PostgreSQL. No final da série de tutoriais, você terá um aplicativo de revisão de restaurante implantado e em execução nos Aplicativos de Contêiner do Azure que se parece com a captura de tela a seguir.