Condividi tramite


Esercitazione: Aggiornare un'app contenitore distribuita dal codice sorgente

Questo articolo illustra come aggiornare l'app contenitore creata nell'articolo precedente, Compilare e distribuire il codice sorgente in App Azure Container.

Se non sono stati completati i passaggi dell'articolo precedente, arrestare qui e tornare a questo articolo dopo aver completato tutti i passaggi.

In questa esercitazione:

  • Apportare una modifica al codice all'applicazione.
  • Eseguire il push delle modifiche nel registro contenitori con un nuovo tag.
  • Visualizzare l'app aggiornata in un browser.
  • Eseguire una query sul flusso di log per visualizzare i messaggi registrati.

Prerequisiti

Per completare questo progetto, sono necessari gli strumenti, le risorse e l'app contenitore creati nell'esercitazione precedente, Compilare e distribuire dal codice sorgente ad App Contenitore di Azure.

Attrezzaggio

  1. Se necessario, accedere ad Azure dall'interfaccia della riga di comando.

    az login
    
  2. Creare variabili di ambiente. Se le variabili di ambiente dell'ultima esercitazione esistono ancora nel terminale, è possibile ignorare questo passaggio.

    Se è necessario ricreare le variabili di ambiente, è prima necessario eseguire una query sul nome del registro contenitori creato nell'ultimo articolo.

    Eseguire il comando seguente per eseguire una query per il registro contenitori creato nell'ultima esercitazione.

    az acr list --query "[].{Name:name}" --output table
    

    Dopo aver ottenuto il nome del registro contenitori, sostituire <REGISTRY_NAME> con il nome del registro ed eseguire il comando seguente.

    RESOURCE_GROUP="my-demo-group"
    CONTAINER_APP_NAME="my-demo-app"
    REGISTRY_NAME="<REGISTRY_NAME>"
    
  3. Aggiornare ed eseguire il codice sorgente.

    Sostituire il contenuto di Startup.cs con il codice seguente.

    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
        }
    
        public void Configure(IApplicationBuilder app, ILogger<Startup> logger)
        {
            app.UseRouting();
    
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapGet("/", async context =>
                {
                    logger.LogInformation("Hello Logger!");
                    await context.Response.WriteAsync("Hello Logger!");
                });
            });
        }
    }
    

    Questa versione del codice registra un logger per scrivere informazioni nella console e nel flusso di log delle app contenitore.

    Compilare il progetto in Configurazione versione.

    dotnet build -c Release
    

    Eseguire quindi l'applicazione per verificare che il codice sia implementato correttamente.

    dotnet run --configuration Release
    

Compilare ed eseguire il push dell'immagine in un registro

Ora che il codice è stato aggiornato, è possibile eseguire il push della versione più recente come nuova immagine nel registro contenitori.

Per assicurarsi che il tag usato per il Registro di sistema sia univoco, usare il comando seguente per creare un nome di tag.

IMAGE_TAG=$(date +%s)

È ora possibile compilare ed eseguire il push della nuova immagine del contenitore nel registro usando il comando seguente.

az acr build \
    -t $REGISTRY_NAME.azurecr.io/$CONTAINER_APP_NAME:$IMAGE_TAG \
    -r $REGISTRY_NAME .

Creare una nuova revisione

È possibile creare una nuova revisione dell'app contenitore in base alla nuova immagine del contenitore di cui è stato eseguito il push nel registro.

az containerapp revision copy \
  --name $CONTAINER_APP_NAME \
  --resource-group $RESOURCE_GROUP \
  --image "$REGISTRY_NAME.azurecr.io/$CONTAINER_APP_NAME:$IMAGE_TAG" \
  --output none

Il revision copy comando crea una nuova revisione dell'app contenitore con l'immagine del contenitore specificata dal registro.

Verificare la distribuzione

Ora che l'applicazione è stata distribuita, è possibile eseguire una query per l'URL con questo comando.

az containerapp show \
  --name $CONTAINER_APP_NAME \
  --resource-group $RESOURCE_GROUP \
  --query properties.configuration.ingress.fqdn -o tsv

In un Web browser passare all'URL dell'app. Dopo l'avvio dell'app contenitore, restituisce Hello Logger!.

Flusso di log delle query

È stato appena visualizzato l'output inviato al browser, quindi ora è possibile usare il comando seguente per visualizzare i messaggi registrati nel flusso di log.

az containerapp logs show \
  --name $CONTAINER_APP_NAME \
  --resource-group $RESOURCE_GROUP \
  --follow

La query restituisce una risposta simile all'esempio seguente:

{"TimeStamp", "xxxx", "Log": "info: Microsoft.Hosting.Lifetime[0]"}
{"TimeStamp", "xxxx", "Log": "Hosting environment: Production"}
{"TimeStamp", "xxxx", "Log": "info: Microsoft.Hosting.Lifetime[0]"}
{"TimeStamp", "xxxx", "Log": "Content root path: /app"}
{"TimeStamp", "xxxx", "Log": "info: Startup[0]"}
{"TimeStamp", "xxxx", "Log": "Hello Logger!""}

Si noti come è possibile visualizzare il messaggio di Hello Logger! nel flusso.

Per interrompere l'esecuzione del flusso, è possibile immettere Cmd/CTRL + C per terminare i messaggi.

Pulire le risorse

Se non si intende usare le risorse di Azure create in questa esercitazione, è possibile rimuoverle con il comando seguente.

az group delete --name my-demo-group

Suggerimento

Problemi? Segnalare i problemi su GitHub aprendo un ticket nel repository App contenitore di Azure.

Passaggi successivi

Continuare per informazioni su come connettersi ai servizi in App Azure Container.