Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esta série de tutoriais mostra como colocar em contêiner um aplicativo Web Python e implantá-lo em Azure Container Apps. Um aplicativo Web de exemplo é conteinerizado e a imagem do Docker é armazenada em Azure Container Registry. Azure Container Apps está configurado para baixar a imagem do Docker do Registro de Contêineres e criar um contêiner. O aplicativo de exemplo se conecta a Azure Database for PostgreSQL para demonstrar a comunicação entre aplicativos de contêiner e outros recursos Azure.
Há várias opções para criar e implantar aplicativos Web Python nativos de nuvem e em contêineres em Azure. Esta série de tutoriais aborda Azure Container Apps. Os Aplicativos de Contêiner são bons 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 Python da web em contêiner no Serviço de Aplicativo do Azure, consulte aplicativo Python da web em contêiner no Azure com MongoDB.
Os procedimentos nesta série de tutoriais orientam você a concluir estas tarefas:
- Crie uma imagem Docker de um aplicativo Web Python e armazene a imagem em Azure Container Registry.
- Configure Azure Container Apps para hospedar a imagem do Docker.
- Configure GitHub Actions para atualizar o contêiner com uma nova imagem do Docker acionada por alterações no seu repositório do GitHub. Esta etapa é opcional.
- Configure a CI/CD (integração contínua e entrega contínua) de um aplicativo Web Python para Azure.
Nesta primeira parte da série, você aprenderá os conceitos fundamentais para implantar um aplicativo Web Python no Azure Container Apps.
Visão geral do serviço
O diagrama a seguir mostra como você usará seu ambiente local, GitHub repositórios e serviços Azure nesta série de tutoriais.
O diagrama inclui estes componentes:
-
Azure Container Apps permite executar microsserviços e aplicativos em contêineres em uma plataforma sem servidor. Uma plataforma sem servidor significa que você desfruta dos benefícios de executar contêineres com configuração mínima. Com Azure Container Apps, seus aplicativos podem ser dimensionados dinamicamente com base em características como tráfego HTTP, processamento controlado por eventos ou CPU ou carga de memória.
Os Apps de Contêiner extraem imagens do Docker do Azure Container Registry. As alterações nas imagens de contêiner disparam uma atualização para o contêiner implantado. Você também pode configurar GitHub Actions para disparar atualizações.
-
Azure Container Registry 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 de Microsoft Entra e permissões para controlar o acesso a imagens do Docker.
Nesta série de tutoriais, a origem do registro é Azure Container Registry. Mas você também pode usar Docker Hub ou um registro privado com pequenas modificações.
Azure Database for PostgreSQL:
O código de exemplo armazena dados do aplicativo em um banco de dados PostgreSQL. O aplicativo de contêiner se conecta ao PostgreSQL usando uma identidade gerenciada atribuída ao usuário . 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 Azure.
-
O código de exemplo desta 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 GitHub Actions, você precisa de uma conta GitHub.
Você ainda pode acompanhar esta série de tutoriais sem uma conta de GitHub, se você trabalhar localmente ou em Azure Cloud Shell para criar a imagem de contêiner do repositório de código de exemplo.
Revisões e CI/CD
Para fazer alterações de código e efetuá-las por push em um contêiner, crie uma nova imagem do Docker com suas alterações. Em seguida, você faz o push da imagem para o Registro de Contêiner e cria 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 GitHub Actions. O pipeline cria e implanta automaticamente seu código em Container Apps sempre que um novo commit for feito no seu repositório 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 em Azure Container Apps. Os Aplicativos de Contêiner são executados no contexto de um environment, que é compatível com uma rede virtual Azure. As redes virtuais são um bloco de construção fundamental para sua rede privada em Azure. Os Aplicativos de Contêiner permitem que você exponha seu aplicativo de contêiner à Web pública habilitando a entrada.
Para configurar CI/CD, você autoriza Azure Container Apps como um aplicativo OAuth para sua conta GitHub. Como um aplicativo OAuth, o Container Apps grava um arquivo de fluxo de trabalho do GitHub Actions em seu repositório com informações sobre os recursos do Azure e as tarefas para atualizá-los. O fluxo de trabalho atualiza os recursos do Azure usando as credenciais de um principal de serviço Microsoft Entra (ou um existente) com acesso baseado em função para Aplicativos de Contêiner e um nome de usuário e senha para o Azure Container Registry. As credenciais são armazenadas com segurança em seu repositório de GitHub.
Por fim, 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 um connection string. Quando o aplicativo está em execução 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 no connection string com um token de acesso Microsoft Entra durante o runtime. Esse mecanismo impede a necessidade de codificar a senha no connection string ou em uma variável de ambiente e fornece uma camada extra de segurança.
A série de tutoriais explica como criar a identidade gerenciada e conceder a ela uma função e permissões apropriadas do PostgreSQL para que ele possa acessar e atualizar o banco de dados. Durante a configuração dos Aplicativos de Contêiner, a série de tutoriais orienta você pela configuração da identidade gerenciada no aplicativo e pela 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 Azure para realizar a mesma coisa.
Pré-requisitos
Para concluir esta série de tutoriais, você precisa:
Uma conta Azure em que você pode criar:
- Uma instância de Azure Container Registry.
- Um ambiente Azure Container Apps.
- Uma instância de Azure Database for PostgreSQL.
Visual Studio Code ou Azure CLI, dependendo da ferramenta que você usa:
- Para Visual Studio Code, você precisa da extensão Container Apps.
- Você pode usar o Azure CLI por Azure Cloud Shell.
Python pacotes:
- psycopg2-binary para se 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 restaurante e revisão no PostgreSQL. No final da série de tutoriais, você terá um aplicativo de revisão de restaurante implantado e em execução em Azure Container Apps semelhante à captura de tela a seguir.