Creare un'app Web Python in contenitori nel cloud
Questo articolo fa parte di un'esercitazione su come inserire e distribuire un'app Web Python nel servizio app Azure. servizio app consente di eseguire app Web in contenitori e di distribuire tramite funzionalità di integrazione continua/distribuzione continua (CI/CD) con Docker Hub, Registro Azure Container e Visual Studio Team Services. In questa parte dell'esercitazione si apprenderà come compilare l'app Web Python in contenitori nel cloud.
Nella parte facoltativa precedente di questa esercitazione, un'immagine del contenitore è stata compilata ed eseguita localmente. In questa parte dell'esercitazione, invece, si compila (in contenitori) un'app Web Python in un'immagine Docker direttamente in Registro Azure Container. La compilazione dell'immagine in Azure è in genere più veloce e semplice rispetto alla compilazione in locale e quindi al push dell'immagine in un registro. Inoltre, la compilazione nel cloud non richiede che Docker sia in esecuzione nell'ambiente di sviluppo.
Quando l'immagine Docker è in Registro Azure Container, può essere distribuita nel servizio app Azure.
Il diagramma dei servizi illustrato di seguito evidenzia i componenti trattati in questo articolo.
1. Creare un Registro Azure Container
Se si dispone già di un Registro Azure Container che è possibile usare, andare al passaggio successivo. In caso contrario, crearne uno.
I comandi dell'interfaccia della riga di comando di Azure possono essere eseguiti in Azure Cloud Shell o in una workstation con l'interfaccia della riga di comando di Azure installata. Quando si esegue in Cloud Shell, ignorare il passaggio 3.
Passaggio 1: Creare un gruppo di risorse se necessario con il comando az group create . Se è già stato configurato un account Azure Cosmos DB per MongoDB nella parte 2. Compilare e testare il contenitore in locale di questa esercitazione, impostare RESOURCE_GROUP_NAME sul nome del gruppo di risorse usato per tale account e passare al passaggio 2.
RESOURCE_GROUP_NAME='msdocs-web-app-rg'
LOCATION='eastus'
az group create -n $RESOURCE_GROUP_NAME -l $LOCATION
LOCATION deve essere un valore di località di Azure. Selezionare una località nelle vicinanze. È possibile elencare i valori della posizione di Azure con il comando seguente: az account list-locations -o table
.
Passaggio 2. Creare un registro contenitori con il 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 deve essere univoco in Azure e contenere 5-50 caratteri alfanumerici.
Nell'output JSON del comando cercare il loginServer
valore, ovvero il nome completo del Registro di sistema (tutte minuscole) e che deve includere il nome del Registro di sistema specificato.
Passaggio 3. Se si esegue l'interfaccia della riga di comando di Azure in locale, accedere al Registro di sistema usando il comando az acr login .
az acr login -n $REGISTRY_NAME
Il comando aggiunge "azurecr.io" al nome per creare il nome completo del Registro di sistema. In caso di esito positivo, verrà visualizzato il messaggio "Login Succeeded".
Nota
Il az acr login
comando non è necessario o supportato in Cloud Shell.
2. Creare un'immagine in Registro Azure Container
È possibile compilare l'immagine del contenitore direttamente in Azure in alcuni modi. In primo luogo, è possibile usare Azure Cloud Shell, che compila l'immagine senza usare affatto l'ambiente locale. È anche possibile compilare l'immagine del contenitore in Azure dall'ambiente locale usando VS Code o l'interfaccia della riga di comando di Azure. La compilazione dell'immagine nel cloud non richiede che Docker sia in esecuzione nell'ambiente locale. Se necessario, è possibile seguire le istruzioni in Clonare o scaricare l'app di esempio nella parte 2 di questa esercitazione per ottenere l'app Web Flask o Django di esempio.
I comandi dell'interfaccia della riga di comando di Azure possono essere eseguiti in una workstation con l'interfaccia della riga di comando di Azure installata o in Azure Cloud Shell. Quando si esegue in Cloud Shell, ignorare il passaggio 1.
Passaggio 1: Se si esegue l'interfaccia della riga di comando di Azure in locale, accedere al Registro di sistema se non è già stato fatto con il comando az acr login .
az acr login -n $REGISTRY_NAME
Se si accede al Registro di sistema da una sottoscrizione diversa da quella in cui è stato creato il Registro di sistema, usare l'opzione --suffix
.
Nota
Il az acr login
comando non è necessario o supportato in Cloud Shell.
Passaggio 2. Compilare l'immagine con il comando az acr build .
az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest .
In questo comando:
Il punto (".") alla fine del comando indica il percorso del codice sorgente da compilare. Se non si esegue questo comando nella directory radice dell'app di esempio, specificare il percorso del codice.
Anziché un percorso del codice nell'ambiente, è possibile, facoltativamente, specificare un percorso del repository GitHub di esempio: https://github.com/Azure-Samples/msdocs-python-django-container-web-app o https://github.com/Azure-Samples/msdocs-python-flask-container-web-app.
Se si esce dall'opzione
-t
(uguale--image
a ), il comando accoda una compilazione di contesto locale senza eseguirne il push nel Registro di sistema. La compilazione senza push può essere utile per verificare che l'immagine venga compilata.
Passaggio 3. Verificare che l'immagine del contenitore sia stata creata con il comando az acr repository list .
az acr repository list -n $REGISTRY_NAME