Panoramica: App Web Python in contenitori Docker su Azure con MongoDB
Questa esercitazione fornisce una guida dettagliata che illustra come inserire in contenitori e distribuire un'app Web Python in Azure. L'app viene ospitata usando servizio app di Azure e usa MongoDB per Azure Cosmos DB per archiviare i dati. L'app Web del servizio app di Azure per contenitori astrae l'orchestrazione dei contenitori, semplifica il processo di distribuzione e consente di concentrarsi sullo sviluppo. Per altre informazioni sulle opzioni dei contenitori di Azure, vedere Confronto tra le opzioni del contenitore di Azure.
In questa esercitazione:
Compilare ed eseguire un contenitore docker in locale. Questo passaggio è facoltativo.
Creare un'immagine di contenitore Docker direttamente in Azure.
Configurare un servizio app per creare un'app Web basata sull'immagine del contenitore Docker.
Al termine di questa esercitazione, si ha la base per l'integrazione continua (CI) e la distribuzione continua (CD) di un'app Web Python in Azure.
Panoramica del servizio
Il diagramma dei servizi che supporta questa esercitazione illustra due ambienti: ambiente per sviluppatori e Azure. Evidenzia i principali servizi di Azure usati nel processo di sviluppo.
Ambiente per sviluppatori
I componenti che supportano l'ambiente di sviluppo in questa esercitazione includono:
sistema di sviluppo locale: un personal computer usato per scrivere codice, compilazione e test del contenitore Docker.
docker containerization: Docker viene usato per creare il pacchetto dell'app e le relative dipendenze in un contenitore portabile.
Strumenti di sviluppo: include un editor di codice e altri strumenti necessari per lo sviluppo di software.
'istanza locale di MongoDB: un database MongoDB locale usato per l'archiviazione dei dati durante lo sviluppo.
Connessione MongoDB: accesso al database MongoDB locale fornito tramite una stringa di connessione.
Ambiente Azure
I componenti che supportano l'ambiente Azure in questa esercitazione includono:
-
- Nel servizio app di Azure l'app Web per contenitori usa la tecnologia contenitore Docker per fornire l'hosting di contenitori sia di immagini predefinite che di immagini personalizzate usando Docker.
- Web App per contenitori utilizza un webhook nel Registro di Contenitori di Azure (ACR) per essere notificato delle nuove immagini. Quando viene eseguito il push di una nuova immagine nel registro, la notifica del webhook attiva il Servizio app affinché esegua il pull dell'aggiornamento e riavvii l'app.
Registro dei container di Azure
Registro Azure Container consente di archiviare e gestire immagini Docker e i relativi componenti in Azure. Fornisce un registro situato vicino alle distribuzioni in Azure che consente di controllare l'accesso usando i gruppi e le autorizzazioni di Microsoft Entra.
In questa esercitazione Registro Azure Container è l'origine del registro, ma è anche possibile usare Docker Hub o un registro privato con modifiche minime.
di Azure Cosmos DB per MongoDB
Azure Cosmos DB per MongoDB è un database NoSQL usato in questa esercitazione per l'archiviazione dei dati.
L'app in contenitori accede alla risorsa di Azure Cosmos DB tramite una stringa di connessione, archiviata come variabile di ambiente.
L'accesso alla risorsa di Azure Cosmos DB dall'applicazione containerizzata avviene tramite una stringa di connessione, che viene passata come variabile di ambiente all'applicazione containerizzata.
Autenticazione
In questa esercitazione si compila un'immagine Docker, in locale o direttamente in Azure, quindi la si distribuisce nel servizio app di Azure. Il servizio app estrae l'immagine del contenitore da un repository di Azure Container Registry.
Per eseguire il pull sicuro delle immagini dal repository, il servizio app usa un'identità gestita assegnata dal sistema. Questa identità gestita concede all'app Web le autorizzazioni per interagire con altre risorse di Azure, eliminando la necessità di credenziali esplicite. Per questa esercitazione, l'identità gestita viene configurata durante la configurazione di App Service per utilizzare un'immagine di contenitore del registro.
L'app Web di esempio per l'esercitazione usa MongoDB per archiviare i dati. Il codice di esempio si connette ad Azure Cosmos DB tramite una stringa di connessione.
Prerequisiti
Per completare questa esercitazione, è necessario:
Un account Azure in cui è possibile creare:
- registro Azure Container
- App Service di Azure
- di Azure Cosmos DB per MongoDB (o l'accesso a un equivalente). Per creare un database Azure Cosmos DB per MongoDB, seguire i passaggi descritti in parte 2 di questa esercitazione.
Visual Studio Code o Azure CLI, a seconda dello strumento scelto. Se usi Visual Studio Code, sono necessari l'estensione Docker e l'estensione Azure App Service .
Questi pacchetti Python:
Docker installato localmente. Questa opzione è facoltativa ed è necessaria solo se si vuole eseguire il contenitore in locale.
App di esempio
In questa esercitazione si crea un'app di revisione del ristorante Python che usa MongoDB per l'archiviazione dei dati. Per un esempio di uso di PostgreSQL, vedere Creare e distribuire un'app Web Flask in Azure con un'identità gestita.
Il risultato finale di questa esercitazione è un'app di revisione del ristorante, distribuita e in esecuzione in Azure, simile allo screenshot seguente.
Passaggio successivo
Compilare e testare in locale