Creare un'app Web Python containerizzata in Azure

Questo articolo è la parte 3 di una serie di esercitazioni in 5 parti sulla creazione di contenitori e sulla distribuzione di un'app Web Python in Servizio app di Azure. Nella parte 2 è stata compilata ed eseguita l'immagine del contenitore in locale. In questo articolo viene creata la stessa app Web Python direttamente in Registro Azure Container senza installare Docker in locale. La compilazione dell'immagine in Azure è in genere più veloce e semplice rispetto alla compilazione locale e quindi al push in un registro. La compilazione di immagini basate sul cloud elimina anche la necessità di eseguire Docker nell'ambiente di sviluppo.

Il servizio app di Azure consente di distribuire ed eseguire app Web in contenitori usando pipeline CI/CD da piattaforme come l'hub Docker, Registro Azure Container e Azure DevOps. Quando l'immagine Docker è in Registro Azure Container, è possibile distribuirla in Servizio app di Azure.

Prerequisiti

Prima di iniziare, assicurarsi di aver completato la parte 2 di questa serie di esercitazioni, che illustra:

  • Clonazione del repository di esempio (Django o Flask).
  • Creazione di un gruppo di risorse per le risorse Azure.
  • Esecuzione dell'app in contenitori in locale per verificarne il funzionamento.

Altri elementi necessari:

Importante

Il Dockerfile di esempio usa python:3.8-slim come immagine di base. Python 3.8 ha raggiunto la fine della vita nell'ottobre 2024 e non riceve più gli aggiornamenti della sicurezza. Aggiorna il Dockerfile per utilizzare python:3.12-slim o python:3.13-slim per le distribuzioni in produzione.

Questo diagramma dei servizi evidenzia i componenti trattati in questo articolo.

Screenshot dei servizi utilizzati nel tutorial - App Python containerizzata su Azure con il percorso di compilazione nel cloud evidenziato.

Creare un Registro Container di Azure

Se si dispone già di un Registro Azure Container, ignorare questo passaggio e procedere con il passaggio successivo. In caso contrario, creare un nuovo Registro Azure Container usando il interfaccia della riga di comando di Azure.

È possibile eseguire interfaccia della riga di comando di Azure comandi nel Azure Cloud Shell o nell'ambiente di sviluppo locale con il interfaccia della riga di comando di Azure installato.

Nota

Usare gli stessi nomi della parte 2 di questa serie di esercitazioni.

  1. Creare un registro contenitori Azure usando il 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
    

    Nell'output JSON del comando individuare il loginServer valore. Questo valore rappresenta il nome completo del Registro di sistema (tutte minuscole) e contiene il nome del Registro di sistema.

    Output di esempio:

    {
      "loginServer": "msdocscontainerregistryname.azurecr.io",
      "name": "msdocscontainerregistryname",
      ...
    }
    
  2. Se si usa il interfaccia della riga di comando di Azure nel computer locale, eseguire il comando az acr login per accedere al registro contenitori.

    az acr login -n $REGISTRY_NAME
    

    Il -n parametro accetta il nome breve del Registro di sistema ,ad esempio , msdocscontainerregistrynameo il nome completo del Registro di sistema (msdocscontainerregistryname.azurecr.io). Il comando autentica Docker con Registro Azure Container usando le credenziali di interfaccia della riga di comando di Azure.

    Output previsto:

    Login Succeeded
    

    Nota

    Se si usa Azure Cloud Shell, non è necessario eseguire il comando perché la sessione di Cloud Shell gestisce automaticamente laz acr login'autenticazione.

Creare un'immagine nell'Registro Azure Container

È possibile generare l'immagine del contenitore direttamente in Azure tramite diversi approcci:

  • Il Azure Cloud Shell consente di costruire l'immagine interamente nel cloud, indipendentemente dall'ambiente locale.
  • In alternativa, è possibile usare VS Code o il interfaccia della riga di comando di Azure per creare l'immagine in Azure dall'installazione locale, senza dover eseguire Docker in locale.

È possibile eseguire interfaccia della riga di comando di Azure comandi nell'ambiente di sviluppo locale usando il interfaccia della riga di comando di Azure installato o in Azure Cloud Shell.

  1. Nella console, vai alla cartella radice del repository clonato nella parte 2 di questa serie di tutorial.

  2. Compilare l'immagine del contenitore usando il comando az acr build .

    Sviluppo locale:

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

    Azure Cloud Shell:

    Se si usa Azure Cloud Shell, specificare l'URL del repository GitHub anziché il percorso locale (.):

    # 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
    

    L'argomento finale (. o l'URL Git) è il contesto di compilazione Docker, ovvero la directory contenente il Dockerfile e i file dell'applicazione usati da Docker per compilare l'immagine.

  3. Verificare che l'immagine del contenitore sia stata creata usando il comando az acr repository list .

    az acr repository list -n $REGISTRY_NAME
    

    Output previsto:

    [
      "msdocspythoncontainerwebapp"
    ]
    

Passaggio successivo