Panoramica: Distribuire un'app Web Python in App Azure Container

Questa esercitazione illustra come inserire in contenitori un'app Web Python e distribuirla in App Azure Container. Un'app Web di esempio verrà inserita in contenitori e l'immagine Docker archiviata in Registro Azure Container. App Contenitore di Azure è configurato per eseguire il pull dell'immagine Docker da Registro Contenitori e creare un contenitore. L'app di esempio si connette a un Database di Azure per PostgreSQL per illustrare la comunicazione tra app contenitore e altre risorse di Azure.

Sono disponibili diverse opzioni per compilare e distribuire app Web Python native e in contenitori nel cloud in Azure. Questa esercitazione illustra le app di Azure Container. Le app contenitore sono valide per l'esecuzione di contenitori per utilizzo generico, in particolare per le applicazioni che si estendono su molti microservizi distribuiti nei contenitori. In questa esercitazione si creerà un contenitore. Per distribuire un'app Web Python come contenitore nel servizio app Azure, vedere App Web Python in contenitori in servizio app.

In questa esercitazione:

  • Creare un'immagine Docker da un'app Web Python e archiviare l'immagine in Registro Azure Container.
  • Configurare App Azure Container per ospitare l'immagine Docker.
  • Configurare un'azione GitHub che aggiorna il contenitore con una nuova immagine Docker attivata dalle modifiche al repository GitHub. Questo ultimo passaggio è facoltativo.

Dopo questa esercitazione, si configurerà 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 come vengono usati l'ambiente locale, i repository GitHub e i servizi di Azure nell'esercitazione.

A screenshot of the environments and services used in the Tutorial - Deploy a Python App on Azure Container Apps.

I componenti che supportano questa esercitazione e illustrati nel diagramma precedente sono:

  • App contenitore di Azure

    • App Contenitore di Azure consente di eseguire microservizi e applicazioni in contenitori in una piattaforma serverless. Una piattaforma serverless consente di sfruttare i vantaggi offerti dall'esecuzione di contenitori con una configurazione minima. Con App Azure Container, le applicazioni possono essere ridimensionate dinamicamente in base a caratteristiche quali il traffico HTTP, l'elaborazione guidata dagli eventi o il carico di CPU o memoria.
    • App contenitore esegue il pull delle immagini Docker da Registro Azure Container. Le modifiche apportate alle immagini del contenitore attivano un aggiornamento al contenitore distribuito. È anche possibile configurare GitHub Actions per attivare gli aggiornamenti.
  • Registro Azure Container

    • Registro Azure Container consente di usare immagini Docker in Azure. Poiché Registro Container è vicino alle distribuzioni in Azure, è possibile controllare l'accesso, consentendo di usare i gruppi e le autorizzazioni di Microsoft Entra per controllare l'accesso alle immagini Docker.
    • In questa esercitazione l'origine del Registro di sistema è Registro Azure Container, ma è anche possibile usare Docker Hub o un registro privato con modifiche secondarie.
  • Database di Azure per PostgreSQL

    • Il codice di esempio archivia i dati dell'applicazione in un database PostgreSQL.
    • L'app contenitore si connette a PostgreSQL tramite variabili di ambiente configurate in modo esplicito o con il servizio di Azure Connessione or.
  • GitHub

    • Il codice di esempio per questa esercitazione si trova in un repository GitHub che verrà copiato tramite fork e clonato in locale. Per configurare un flusso di lavoro CI/CD con GitHub Actions, è necessario un account GitHub.
    • È comunque possibile seguire questa esercitazione senza un account GitHub, che funziona in locale o in Azure Cloud Shell per compilare l'immagine del contenitore dal repository di codice di esempio.

Revisioni e CI/CD

Per apportare modifiche al codice ed eseguirne il push in un contenitore, creare una nuova immagine Docker con la modifica. Quindi, si esegue il push dell'immagine in Registro Contenitori e si crea una nuova revisione dell'app contenitore.

Per automatizzare questo processo, un passaggio facoltativo dell'esercitazione illustra come creare una pipeline di integrazione continua e recapito continuo (CI/CD) con GitHub Actions. La pipeline compila e distribuisce automaticamente il codice nell'app contenitore ogni volta che viene eseguito il push di un nuovo commit nel repository GitHub.

Autenticazione e sicurezza

In questa esercitazione si creerà un'immagine del contenitore Docker direttamente in Azure e la si distribuirà in App Contenitore di Azure. App contenitore eseguite nel contesto di un ambiente, supportato da una Rete virtuale rete virtuale (VNet) di Azure. Le reti virtuali sono un blocco predefinito fondamentale per la rete privata in Azure. App contenitore consente di esporre l'app contenitore al Web pubblico abilitando l'ingresso.

Per configurare l'integrazione continua e il recapito continuo (CI/CD), si autorizza app Azure Container come app OAuth per l'account GitHub. Come app OAuth, App contenitore scrive un file del flusso di lavoro di GitHub Actions nel repository con informazioni sulle risorse e i processi di Azure per aggiornarli. Il flusso di lavoro aggiorna le risorse di Azure usando le credenziali di un'entità servizio Microsoft Entra (o una esistente) con accesso basato sui ruoli per App contenitore e nome utente e password per Registro Azure Container. Le credenziali vengono archiviate in modo sicuro nel repository GitHub.

Infine, l'esercitazione di esempio di app Web archivia i dati in un database PostgreSQL. Il codice di esempio si connette a PostgreSQL tramite un stringa di connessione. Durante la configurazione dell'app contenitore, l'esercitazione illustra come configurare le variabili di ambiente contenenti informazioni di connessione. È anche possibile usare un Connessione or del servizio di Azure per eseguire la stessa operazione.

Prerequisiti

Per completare questa esercitazione, sono necessari gli elementi seguenti:

Esempio di app

L'app di esempio Python è un'app di revisione del ristorante che salva i dati del ristorante ed esamina i dati in PostgreSQL. Alla fine dell'esercitazione si avrà un'app di revisione del ristorante distribuita e in esecuzione in App Contenitore di Azure simile allo screenshot seguente.

A screenshot of the sample app created from the Python containerized web app used in the Tutorial - Containerized Python App on Azure.

Passaggio successivo