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.

Este diagrama de serviço destaca os componentes abordados neste artigo.

Uma captura de tela dos serviços usando no Tutorial - Aplicativo Python em contêineres no Azure com o caminho de compilação na nuvem realçado.

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 numa estação de trabalho com a CLI do Azure instalada. Ao executar no Cloud Shell, ignore Passo 3.

  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. Criar e testar contêiner localmente deste tutorial, defina a variável de ambiente RESOURCE_GROUP_NAME como o nome do grupo de recursos usado para essa conta e passe para a próxima etapa.

    RESOURCE_GROUP_NAME='msdocs-web-app-rg'
    LOCATION='eastus'
    
    az group create -n $RESOURCE_GROUP_NAME -l $LOCATION
    

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

  2. Crie um registo de contentores 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 loginServer, que é o nome do registo totalmente qualificado (em minúsculas) e que deve incluir o nome do registo que especificou.

  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 "Início de sessão bem-sucedido".

    Observação

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

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 exemplo.

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 Etapa 1.

  1. Se você estiver executando a CLI do Azure localmente, entre 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 parâmetro --suffix.

    Observação

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

  2. Construa a imagem utilizando 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 -t (igual a --image), o comando enfileirará uma compilação de contexto local sem enviá-la para o registro. Construir sem fazer o push pode ser útil para verificar se a imagem é criada.

  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