Crie um aplicativo Web Python em contêiner na nuvem

Este artigo faz parte de um tutorial sobre como contentorizar e implementar uma aplicação Web Python no Serviço de Aplicações do Azure. O Serviço de Aplicativo permite que você execute aplicativos Web em contêineres e implante por meio de recursos de integração contínua/implantação contínua (CI/CD) com o Docker Hub, o Registro de Contêiner do Azure e o Visual Studio Team Services. Nesta parte do tutorial, você aprenderá a criar o aplicativo Web Python em contêiner na nuvem.

Na parte opcional anterior deste tutorial, uma imagem de contêiner foi criada e executada localmente. Por outro lado, nesta parte do tutorial, você cria (conteineriza) um aplicativo Web Python em uma imagem do Docker diretamente no Registro de Contêiner do Azure. Criar a imagem no Azure normalmente é mais rápido e fácil do que criar localmente e, em seguida, enviar a imagem para um registro. Além disso, a criação na nuvem não exige que o Docker esteja em execução em seu ambiente de desenvolvimento.

Quando a imagem do Docker estiver no Registro de Contêiner do Azure, ela poderá ser implantada no Serviço de Aplicativo do Azure.

O diagrama de serviço mostrado abaixo destaca os componentes abordados neste artigo.

A screenshot of the services using in the Tutorial - Containerized Python App on Azure with the build-in-cloud path highlighted.

1. Criar um Registro de Contêiner do Azure

Se você já tiver um Registro de Contêiner do Azure que possa usar, vá para a próxima etapa. Se não o fizer, crie um.

Os comandos da CLI do Azure podem ser executados no Azure Cloud Shell ou em uma estação de trabalho com a CLI do Azure instalada. Ao executar no Cloud Shell, ignore a Etapa 3.

Passo 1. Crie um grupo de recursos, se necessário, com o comando az group create . Se você já configurou uma conta do Azure Cosmos DB para MongoDB na parte 2. Crie e teste o contêiner localmente deste tutorial, defina RESOURCE_GROUP_NAME para o nome do grupo de recursos usado para essa conta e passe para a Etapa 2.

RESOURCE_GROUP_NAME='msdocs-web-app-rg'
LOCATION='eastus'

az group create -n $RESOURCE_GROUP_NAME -l $LOCATION

LOCATION deve ser um valor de local do Azure. Escolha uma localização próxima de si. Você pode listar valores de local do Azure com o seguinte comando: az account list-locations -o table.

Passo 2. Crie um registro de contêiner com o comando az acr create .

REGISTRY_NAME='<your Azure Container Registry name>'

az acr create -g $RESOURCE_GROUP_NAME -n $REGISTRY_NAME --sku Basic

REGISTRY_NAME devem ser exclusivos no Azure e conter de 5 a 50 caracteres alfanuméricos.

Na saída JSON do comando, procure o valor, que é o nome do Registro totalmente qualificado (todas minúsculas) e que deve incluir o loginServer nome do Registro especificado.

Passo 3. Se você estiver executando a CLI do Azure localmente, faça logon no Registro usando o comando az acr login .

az acr login -n $REGISTRY_NAME

O comando adiciona "azurecr.io" ao nome para criar o nome de registro totalmente qualificado. Se for bem-sucedido, você verá a mensagem "Login bem-sucedido".

Nota

O az acr login comando não é necessário ou suportado no Cloud Shell.

2. Criar uma imagem no Registro de Contêiner do Azure

Você pode criar a imagem de contêiner diretamente no Azure de algumas maneiras. Primeiro, você pode usar o Azure Cloud Shell, que cria a imagem sem usar seu ambiente local. Você também pode criar a imagem de contêiner no Azure a partir do seu ambiente local usando o VS Code ou a CLI do Azure. A criação da imagem na nuvem não exige que o Docker esteja em execução em seu ambiente local. Se você precisar, você pode seguir as instruções em Clone ou baixar o aplicativo de exemplo na parte 2 deste tutorial para obter o aplicativo web Flask ou Django de amostra.

Os comandos da CLI do Azure podem ser executados em uma estação de trabalho com a CLI do Azure instalada ou no Azure Cloud Shell. Ao executar no Cloud Shell, ignore a Etapa 1.

Passo 1. Se você estiver executando a CLI do Azure localmente, faça logon no registro se ainda não tiver feito isso com o comando az acr login .

az acr login -n $REGISTRY_NAME

Se estiver a aceder ao registo a partir de uma subscrição diferente daquela em que o registo foi criado, utilize o --suffix parâmetro.

Nota

O az acr login comando não é necessário ou suportado no Cloud Shell.

Passo 2. Crie a imagem com o comando az acr build .

az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest .

Neste comando:

  • O ponto (".") no final do comando indica o local do código-fonte a ser compilado. Se você não estiver executando esse comando no diretório raiz do aplicativo de exemplo, especifique o caminho para o código.

    Em vez de um caminho para o código em seu ambiente, você pode, opcionalmente, especificar um caminho para o repositório GitHub de exemplo: https://github.com/Azure-Samples/msdocs-python-django-container-web-app ou https://github.com/Azure-Samples/msdocs-python-flask-container-web-app.

  • Se você deixar de fora a opção (igual --imagea -t ), o comando enfileira uma compilação de contexto local sem enviá-la para o registro. Construir sem empurrar pode ser útil para verificar se a imagem é construída.

Passo 3. Confirme se a imagem do contêiner foi criada com o comando az acr repository list .

az acr repository list -n $REGISTRY_NAME

Próximo passo