Criar um aplicativo Web Python em contêiner no Azure

Este artigo é a parte 3 de uma série de tutoriais em 5 partes sobre a containerização e implementação de uma aplicação web Python para o Serviço de Aplicações do Azure. Na parte 2, construías e executavas a imagem do contentor localmente. Neste artigo, constróis a mesma aplicação web Python diretamente em Azure Container Registry sem instalar o Docker localmente. Construir a imagem no Azure é normalmente mais rápido e fácil do que construir localmente e depois enviá-la para um registo. A construção de imagens baseada na cloud também elimina a necessidade de o Docker estar a correr no seu ambiente de desenvolvimento.

O Serviço de Aplicativo do Azure permite implantar e executar aplicativos Web em contêineres usando pipelines de CI/CD de plataformas como o Docker Hub, o Registro de Contêiner do Azure e o Azure DevOps. Depois de a imagem Docker estar no Azure Container Registry, pode implementá-la no Serviço de Aplicações do Azure.

Pré-requisitos

Antes de começar, certifique-se de que completou a parte 2 desta série de tutoriais, que cobre:

  • Clonar o repositório de amostras (Django ou Flask).
  • Criar um grupo de recursos para recursos do Azure.
  • Estou a correr a aplicação containerizada localmente para verificar se funciona.

Você também precisa:

Importante

O Dockerfile de exemplo utiliza python:3.8-slim como imagem de base. Python 3.8 atingiu o fim de vida em outubro de 2024 e já não recebe atualizações de segurança. Atualize o seu Dockerfile para usar python:3.12-slim ou python:3.13-slim para implementações em produção.

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 já tem um Azure Container Registry, pule este passo e avance para o passo seguinte. Caso contrário, crie um novo Azure Container Registry usando a CLI do Azure.

Pode executar comandos CLI do Azure no Azure Cloud Shell ou no seu ambiente de desenvolvimento local com o CLI do Azure instalado.

Observação

Use os mesmos nomes que na parte 2 desta série de tutoriais.

  1. Crie um registo de contentores Azure usando o comando az acr create.

    #!/bin/bash
    # Use the resource group that you created in part 2 of this tutorial series.
    RESOURCE_GROUP_NAME='msdocs-web-app-rg'
    # REGISTRY_NAME must be unique within Azure and contain 5-50 alphanumeric characters.
    # If the name is already taken, you'll receive an error. Choose a different name and retry.
    REGISTRY_NAME='msdocscontainerregistryname'
    
    echo "Creating Azure Container Registry $REGISTRY_NAME..."
    az acr create -g $RESOURCE_GROUP_NAME -n $REGISTRY_NAME --sku Standard
    

    Na saída JSON do comando, localize o valor loginServer. Esse valor representa o nome de registo completo (em minúsculas) e contém o nome do registo.

    Exemplo de saída:

    {
      "loginServer": "msdocscontainerregistryname.azurecr.io",
      "name": "msdocscontainerregistryname",
      ...
    }
    
  2. Se estiveres a usar o CLI do Azure na tua máquina local, executa o comando az acr login para iniciar sessão no registo do contentor.

    az acr login -n $REGISTRY_NAME
    

    O -n parâmetro aceita o nome curto do registo (por exemplo, msdocscontainerregistryname) ou o nome totalmente qualificado do registo (msdocscontainerregistryname.azurecr.io). O comando autentica o Docker com o Azure Container Registry usando as suas credenciais CLI do Azure.

    Resultados esperados:

    Login Succeeded
    

    Observação

    Se estiveres a usar Azure Cloud Shell, não precisas de executar o comando az acr login porque a tua sessão Cloud Shell trata automaticamente da autenticação.

Criar uma imagem no Registro de Contêiner do Azure

Você pode gerar a imagem de contêiner diretamente no Azure por meio de várias abordagens:

  • O Azure Cloud Shell permite-lhe construir a imagem inteiramente na cloud, independentemente do seu ambiente local.
  • Em alternativa, podes usar o VS Code ou a CLI do Azure para criar a imagem no Azure a partir da tua configuração local, sem precisar de o Docker estar a correr localmente.

Pode executar comandos CLI do Azure no seu ambiente de desenvolvimento local usando o CLI do Azure instalado ou em Azure Cloud Shell.

  1. Na consola, vai à pasta raiz do teu repositório clonado da parte 2 desta série de tutoriais.

  2. Compile a imagem do contentor utilizando o comando az acr build.

    Desenvolvimento local:

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

    Azure Cloud Shell:

    Se estiver a usar Azure Cloud Shell, especifique a URL do repositório GitHub em vez do caminho local (.):

    # For Django sample:
    az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest https://github.com/Azure-Samples/msdocs-python-django-container-web-app.git
    
    # For Flask sample:
    az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest https://github.com/Azure-Samples/msdocs-python-flask-container-web-app.git
    

    O argumento final (. ou o URL do Git) é o contexto de compilação do Docker — o diretório que contém o ficheiro Docker e os ficheiros de aplicação que o Docker usa para construir a imagem.

  3. Confirme que a imagem do contentor foi criada usando o comando az acr repository list .

    az acr repository list -n $REGISTRY_NAME
    

    Resultados esperados:

    [
      "msdocspythoncontainerwebapp"
    ]
    

Próximo passo