Guida introduttiva: Compilare e distribuire da un repository in App contenitore di Azure
Questo articolo illustra come compilare e distribuire un microservizio in App contenitore di Azure da un repository GitHub usando il linguaggio di programmazione preferito. In questa guida introduttiva si crea un microservizio di esempio, che rappresenta un servizio API Web back-end che restituisce una raccolta statica di album musicali.
Questa applicazione di esempio è disponibile in due versioni, Una versione include un contenitore, in cui l'origine contiene un Dockerfile. e l'altra senza Dockerfile. Selezionare la versione più adatta al codice sorgente disponibile. Se non si ha familiarità con i contenitori, selezionare l'opzione Senza Dockerfile in alto.
Nota
È anche possibile compilare e distribuire questa applicazione di esempio dal file system locale. Per altre informazioni, vedere Compilare dal codice sorgente locale e distribuire l'applicazione in App contenitore di Azure.
Lo screenshot seguente mostra l'output dell'app del servizio API album da distribuire.
Per completare il progetto, sono necessari gli elementi seguenti:
Requisito | Istruzioni |
---|---|
Account di Azure | Se non si dispone di un account, crearne uno gratuitamente. Per continuare, è necessaria l'autorizzazione collaboratore o proprietario per la sottoscrizione di Azure. Per informazioni dettagliate, fare riferimento ad Assegnare ruoli di Azure usando il portale di Azure. |
Account GitHub | È possibile ottenerlo gratuitamente. |
git | Installare Git |
Interfaccia della riga di comando di Azure | Installare l'interfaccia della riga di comando di Azure. |
Per accedere ad Azure dall'interfaccia della riga di comando, eseguire il comando seguente e seguire le istruzioni per completare il processo di autenticazione.
az login
Assicurarsi di eseguire l'ultima versione dell'interfaccia della riga di comando eseguire il comando di aggiornamento.
az upgrade
Installare o aggiornare quindi l'estensione App contenitore di Azure per l'interfaccia della riga di comando.
Se si ricevono errori relativi ai parametri mancanti quando si eseguono comandi az containerapp
nell'interfaccia della riga di comando di Azure o nei cmdlet del modulo Az.App
in Azure PowerShell, assicurarsi di avere installato la versione più recente dell'estensione App contenitore di Azure.
az extension add --name containerapp --upgrade
Nota
A partire da maggio 2024, le estensioni dell'interfaccia della riga di comando di Azure non abilitano più le funzionalità di anteprima per impostazione predefinita. Per accedere alle funzionalità di anteprima di App contenitore, installare l'estensione App contenitore con --allow-preview true
.
az extension add --name containerapp --upgrade --allow-preview true
Ora che l'estensione o il modulo corrente è installato, registrare gli spazi dei nomi Microsoft.App
e Microsoft.OperationalInsights
.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Dopo aver completato la configurazione dell'interfaccia della riga di comando di Azure, è possibile definire le variabili di ambiente usate in questo articolo.
Definire le variabili seguenti nella shell Bash.
export RESOURCE_GROUP="album-containerapps"
export LOCATION="canadacentral"
export ENVIRONMENT="env-album-containerapps"
export API_NAME="album-api"
export GITHUB_USERNAME="<YOUR_GITHUB_USERNAME>"
Prima di eseguire questo comando, assicurarsi di sostituire <YOUR_GITHUB_USERNAME>
con il proprio nome utente di GitHub.
Definire quindi un nome di registro contenitori univoco.
export ACR_NAME="acaalbums"$GITHUB_USERNAME
In una finestra del browser passare al repository GitHub per il linguaggio preferito e creare una copia tramite fork del repository.
Selezionare il pulsante Fork nella parte superiore del repository Album API per creare una copia tramite fork del repository nell'account. Copiare quindi l'URL del repository per usarlo nel passaggio successivo.
In una finestra del browser passare al repository GitHub per il linguaggio preferito e creare una copia tramite fork del repository inclusi i rami.
Selezionare il pulsante Fork nella parte superiore del repository Album API per creare una copia tramite fork del repository nell'account. Deselezionare "Copy the main
branch only" per creare un fork del ramo buildpack
.
Compilare e distribuire la prima app contenitore dal repository GitHub con fork con il comando containerapp up
. Questo comando consentirà di:
- Creare il gruppo di risorse
- Creare un ambiente di App contenitore con un'area di lavoro Log Analytics
- Creare un Registro Azure Container
- Creare un flusso di lavoro di GitHub Action per compilare e distribuire l'app contenitore
- Creare il gruppo di risorse
- Creare un ambiente di App contenitore con un'area di lavoro Log Analytics
- Creare automaticamente un registro predefinito come parte dell'ambiente
- Creare un flusso di lavoro di GitHub Action per compilare e distribuire l'app contenitore
Quando si esegue il push di nuovo codice nel repository, GitHub Action eseguirà le operazioni seguenti:
- Compilare l'immagine del contenitore ed eseguirne il push nel Registro Azure Container
- Distribuire l'immagine del contenitore nell'app contenitore creata
Il comando up
usa il Dockerfile nella radice del repository per compilare l'immagine del contenitore. L'istruzione EXPOSE
nel Dockerfile definisce la porta di destinazione. Un file Docker non è necessario per compilare un'app contenitore.
- Rilevare automaticamente il linguaggio e il runtime
- Compilare l'immagine usando il buildpack appropriato
- Eseguire il push dell'immagine nel registro predefinito di App contenitore di Azure
L'app contenitore deve essere accessibile al traffico in ingresso. Assicurarsi di esporre la porta 8080 per l'ascolto delle richieste in ingresso.
Nel comando seguente sostituire <YOUR_GITHUB_REPOSITORY_NAME>
con il nome del repository GitHub specifico sotto forma di https://github.com/<OWNER>/<REPOSITORY-NAME>
o <OWNER>/<REPOSITORY-NAME>
.
Nel comando seguente sostituire <YOUR_GITHUB_REPOSITORY_NAME>
con il nome del repository GitHub specifico sotto forma di https://github.com/<OWNER>/<REPOSITORY-NAME>
o <OWNER>/<REPOSITORY-NAME>
. Usare l'opzione --branch buildpack
per puntare all'origine di esempio senza un Dockerfile.
az containerapp up \
--name $API_NAME \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--environment $ENVIRONMENT \
--context-path ./src \
--repo <YOUR_GITHUB_REPOSITORY_NAME>
az containerapp up \
--name $API_NAME \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--environment $ENVIRONMENT \
--context-path ./src \
--ingress external \
--target-port 8080 \
--repo <YOUR_GITHUB_REPOSITORY_NAME>
--branch buildpack
--
Usando l'URL e il codice utente visualizzato nel terminale, passare alla pagina di attivazione del dispositivo GitHub in un browser e immettere il codice utente nella pagina. Seguire le istruzioni per autorizzare l'interfaccia della riga di comando di Azure ad accedere al repository GitHub.
Il comando up
crea un flusso di lavoro di GitHub Action nella cartella .github/workflows del repository. Il flusso di lavoro viene attivato per compilare e distribuire l'app contenitore quando si esegue il push delle modifiche nel repository.
Copiare il nome di dominio restituito dal containerapp up
in un Web browser. Dal Web browser passare all'endpoint /albums
dell'URL.
Se non si intende continuare con l'esercitazione Distribuire un front-end, è possibile rimuovere le risorse di Azure create durante questa guida introduttiva con il comando seguente.
Attenzione
Nell'esempio seguente, il gruppo di risorse specificato e tutte le risorse al suo interno vengono eliminati. Se il gruppo contiene risorse esterne all'ambito di questa guida introduttiva, vengono eliminate anche queste.
az group delete --name $RESOURCE_GROUP
Suggerimento
Problemi? Segnalare i problemi su GitHub aprendo un ticket nel repository App contenitore di Azure.
Dopo aver completato questa guida introduttiva, è possibile continuare con Esercitazione: Comunicazione tra microservizi in App contenitore di Azure per informazioni su come distribuire un'applicazione front-end che chiama l'API.