Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Esta série de tutoriais mostra-lhe como containerizar uma aplicação web Python e distribuí-la para Azure Container Apps. Uma aplicação web de exemplo é containerizada, e a imagem Docker é armazenada em Azure Container Registry. O Azure Container Apps está configurado para extrair a imagem Docker do Container Registry e criar um contentor. A aplicação de exemplo liga-se a Azure Database for PostgreSQL para demonstrar a comunicação entre Aplicações de Contentores e outros recursos Azure.
Existem várias opções para construir e implementar aplicações web Python nativas da cloud e containerizadas no Azure. Esta série de tutoriais cobre Azure Container Apps. 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 implementar uma aplicação web Python como contentor para Azure App Service, veja Containerized Python web app on Azure with MongoDB.
Os procedimentos desta série de tutoriais orientam você a concluir estas tarefas:
- Constrói uma imagem Docker a partir de uma aplicação web Python e guarda a imagem em Azure Container Registry.
- Configure Azure Container Apps para hospedar a imagem Docker.
- Configura GitHub Actions para atualizar o contentor com uma nova imagem Docker desencadeada por alterações ao teu repositório GitHub. Esta etapa é opcional.
- Configure integração contínua e entrega contínua (CI/CD) de uma aplicação web Python para o Azure.
Nesta primeira parte da série, aprende conceitos fundamentais para implementar uma aplicação web em Python no Azure Container Apps.
Visão geral do serviço
O diagrama seguinte mostra como vais usar o teu ambiente local, repositórios do GitHub e os serviços do Azure nesta série de tutoriais.
O diagrama inclui estes componentes:
-
O Azure Container Apps permite-lhe executar microserviços e aplicações containerizadas numa plataforma serverless. Uma plataforma sem servidor significa que você aproveita os benefícios de executar contêineres com configuração mínima. Com o Azure Container Apps, as suas aplicações podem escalar dinamicamente com base em características como tráfego HTTP, processamento orientado a eventos ou carga de CPU ou memória.
Container Apps extrai imagens Docker do Azure Container Registry. As alterações nas imagens de contêiner acionam uma atualização para o contêiner implantado. Também podes configurar o GitHub Actions para ativar atualizações.
-
Azure Container Registry permite-te trabalhar com imagens Docker no Azure. Como o Container Registry está próximo das tuas implementações no Azure, tens controlo sobre o acesso. Pode usar os seus grupos Microsoft Entra e permissões para controlar o acesso às imagens do Docker.
Nesta série de tutoriais, a fonte do registo é Azure Container Registry. Mas também pode usar o Docker Hub ou um registo privado com pequenas modificações.
Azure Database for 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. A informação de ligação é armazenada em variáveis de ambiente configuradas explicitamente ou através de um conector de serviço Azure.
-
O código de exemplo para esta série de tutoriais está em um repositório GitHub que você faz fork e clona localmente. Para configurar um fluxo de trabalho CI/CD com GitHub Actions, precisas de uma conta GitHub.
Ainda podes acompanhar esta série de tutoriais sem uma conta GitHub, se trabalhares localmente ou em Azure Cloud Shell para construir a imagem do contentor 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 este processo, um passo opcional na série de tutoriais mostra-te como construir um pipeline CI/CD usando o GitHub Actions. O pipeline constrói e implementa automaticamente o seu código para Aplicações Container sempre que um novo commit é enviado para o seu repositório GitHub.
Autenticação e segurança
Nesta série de tutoriais, constróis uma imagem de contentor Docker diretamente no Azure e implementa-a no Azure Container Apps. O Container Apps funciona no contexto de um ambiente , que é suportado por uma rede virtual Azure. As redes virtuais são um bloco fundamental para a 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, autoriza a Azure Container Apps como uma aplicação OAuth para a sua conta GitHub. Como aplicação OAuth, o Container Apps escreve um ficheiro de workflow GitHub Actions no seu repositório com informações sobre recursos e trabalhos do Azure para os atualizar. O fluxo de trabalho atualiza os recursos do Azure utilizando as credenciais de um principal de serviço Microsoft Entra (ou de um existente) com acesso baseado em funções para Aplicações Container e um nome de utilizador e palavra-passe para o Azure Container Registry. As credenciais são armazenadas de forma segura no seu repositório do 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 liga-se ao PostgreSQL através de uma connection string. Quando a aplicação está a correr no Azure, liga-se à base de dados PostgreSQL usando uma identidade gerida atribuída pelo utilizador. O código utiliza DefaultAzureCredential para atualizar dinamicamente a palavra-passe no connection string com um token de acesso Microsoft Entra durante a execução. Este mecanismo evita a necessidade de codificar a palavra-passe na connection string ou numa 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. Também podes usar um conector de serviço Azure para conseguir o mesmo.
Pré-requisitos
Para concluir esta série de tutoriais, você precisa:
Uma conta no Azure onde pode criar:
- Uma instância do Azure Container Registry.
- Um ambiente Azure Container Apps.
- Uma instância do serviço Azure Database for PostgreSQL.
Visual Studio Code ou o Azure CLI, dependendo da ferramenta que usares:
- Para Visual Studio Code, precisa da extensão Container Apps.
- Podes usar o Azure CLI através de Azure Cloud Shell.
Pacotes em Python:
- psycopg2-binary para ligação ao PostgreSQL.
- Flask ou Django como um framework web.
Aplicativo de exemplo
A aplicação de exemplo Python é uma aplicação de avaliações de restaurantes que guarda dados de restaurantes e avaliações em PostgreSQL. No final da série de tutoriais, terá uma aplicação de avaliação de restaurantes implementada e a correr no Azure Container Apps, que se assemelha à seguinte captura de ecrã.