Creare un'app Web Python containerizzata nel cloud
Questo articolo fa parte di un'esercitazione su come inserire e distribuire un'app Web Python nel servizio app di Azure. App Service consente di eseguire app Web containerizzate e distribuirle tramite funzionalità di integrazione continua/distribuzione continua (CI/CD) con Docker Hub, Registro dei container Azure e Azure DevOps Services. In questa parte dell'esercitazione, imparerai come creare l'app web Python containerizzata nel cloud.
Nella parte opzionale precedente di questo tutorial, è stata creata ed eseguita localmente un'immagine del contenitore. In contrasto, in questa parte dell'esercitazione, si crea (containerizza) un'app Web Python in un'immagine Docker direttamente nel 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 si trova in Registro Azure Container, può essere distribuita nel servizio app di Azure.
Questo diagramma dei servizi evidenzia i componenti trattati in questo articolo.
Creare un Registro Container di Azure
Se si ha già un Registro Azure Container che è possibile usare, andare al passaggio successivo. Se no, crea uno.
- CLI di Azure
- di VS Code
- del portale di Azure
I comandi della CLI di Azure possono essere eseguiti nella Azure Cloud Shell o su una workstation con la CLI di Azure installata. Quando si utilizza Cloud Shell, ignorare la fase 3 .
Creare un gruppo di risorse, se necessario, con il comando az group create. Se hai già configurato un account Azure Cosmos DB per MongoDB nella parte 2. Compilazione e test del contenitore in locale di questa esercitazione, imposta la variabile d'ambiente RESOURCE_GROUP_NAME sul nome del gruppo di risorse utilizzato per tale account e prosegui al passaggio successivo.
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. Scegliere una località nelle vicinanze. È possibile elencare i valori della posizione di Azure con il comando seguente:
az account list-locations -o table
.Creare un registro di 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 valore
loginServer
, ovvero il nome completo del registro (tutti minuscoli) che dovrebbe includere il nome del registro specificato.Se stai eseguendo Azure CLI in locale, accedi al registro 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. In caso di esito positivo, verrà visualizzato il messaggio "Login Succeeded".
Nota
Il comando
az acr login
non è necessario o supportato in Cloud Shell.
Creare un'immagine nell'Azure Container Registry
È 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, puoi seguire le istruzioni in per clonare o scaricare l'applicazione di esempio nella parte 2 di questo tutorial per ottenere l'applicazione web Flask o Django di esempio.
- CLI di Azure
- VS Code
- del portale di Azure
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 utilizza Cloud Shell, ignorare il passaggio 1.
Se stai eseguendo l'interfaccia della riga di comando di Azure localmente, accedi al registro se non l'hai già 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 comando
az acr login
non è necessario e non è supportato in Cloud Shell.Costruire 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, il percorso del codice va specificato.
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 a--image
), 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.
Verificare che l'immagine del contenitore sia stata creata con il comando az acr repository list.
az acr repository list -n $REGISTRY_NAME