Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come compilare e distribuire un'applicazione in App Contenitore di Azure dal codice sorgente nel computer nel linguaggio di programmazione preferito.
In questa esercitazione:
- Creare una semplice applicazione Web.
- Creare un Dockerfile associato per l'app.
- Creare un'immagine dal codice compilato ed eseguirne il push in un registro contenitori.
- Usare l'identità gestita per accedere in modo sicuro al registro contenitori.
- Distribuire il contenitore in App Azure Container.
- Visualizzare l'app in un browser per verificare la distribuzione.
Prerequisiti
Per completare il progetto, sono necessari gli elementi seguenti:
| Requisito | Istruzioni |
|---|---|
| Account 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. |
| Interfaccia della riga di comando di Azure | Installare l'interfaccia della riga di comando di Azure o eseguire l'aggiornamento alla versione più recente. L'interfaccia della riga di comando per sviluppatori di Azure (azd comandi) è disponibile tramite l'interfaccia della riga di comando di Azure. |
A seconda del linguaggio scelto, potrebbe anche essere necessario installare il runtime, l'SDK e altre dipendenze appropriate.
Creare l'applicazione locale
I passaggi seguenti illustrano il codice e le dipendenze necessari per compilare un'applicazione di esempio da distribuire in App Azure Container.
Nota
Se si vuole usare un'altra lingua diversa da quelle elencate, immettere il prompt seguente nel modello di intelligenza artificiale preferito.
Prima di inviare il prompt, sostituire <LANGUAGE> con la lingua desiderata.
Generate the simplest possible "hello world" web server in idiomatic <LANGUAGE>.
Make sure to include any dependencies required for the application to run locally and in production.
Creare ed eseguire il codice sorgente.
Creare un nuovo progetto C#.
dotnet new webapp --name MyAcaDemo --language C#Passare alla cartella MyAcaDemo .
cd MyAcaDemoAprire
Program.csin un editor di codice e sostituire il contenuto con il codice seguente.public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); webBuilder.UseUrls("http://*:8080"); }); }L'implementazione della
Programclasse con questo codice crea la base di un'applicazione Web. Creare quindi una classe responsabile della restituzione di una pagina Web come risposta.Nella stessa cartella creare un nuovo file denominato
Startup.cse immettere il codice seguente.public class Startup { public void ConfigureServices(IServiceCollection services) { } public void Configure(IApplicationBuilder app) { app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapGet("/", async context => { await context.Response.WriteAsync("Hello World!"); }); }); } }Quando viene effettuata una richiesta all'applicazione Web, viene restituito il testo "Hello World!". Per verificare che il codice sia in esecuzione correttamente nel computer locale, compilare il progetto nella configurazione della versione.
dotnet build -c ReleaseEseguire quindi l'applicazione per verificare che il codice sia implementato correttamente.
dotnet run --configuration ReleaseDopo aver verificato che l'applicazione funzioni come previsto, è possibile arrestare il server locale e passare alla creazione di un Dockerfile in modo da poter distribuire l'app in App contenitore.
Nella cartella MyAcaDemo creare un file denominato
Dockerfilee aggiungere il contenuto seguente.FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src COPY . . RUN dotnet publish -c Release -o /app/publish FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS final WORKDIR /app COPY --from=build /app/publish . EXPOSE 8080 ENTRYPOINT ["dotnet", "MyAcaDemo.dll"]Ora che il codice e un Dockerfile sono pronti, è possibile distribuire l'app in App Contenitore di Azure.
Creazione di risorse Azure
Accedere ad Azure dall'interfaccia della riga di comando con il comando seguente. Per completare il processo di autenticazione, assicurarsi di seguire tutte le istruzioni.
az loginInstallare o aggiornare l'estensione App Azure Container per l'interfaccia della riga di comando di Azure.
az extension add --name containerapp --upgradeNota
Se si ricevono errori relativi ai parametri mancanti quando si eseguono
az containerappcomandi, assicurarsi di avere installato la versione più recente dell'estensione App Azure Container.Dopo aver completato la configurazione dell'interfaccia della riga di comando di Azure, è possibile definire un set di variabili di ambiente.
Prima di eseguire il comando seguente, esaminare i valori forniti.
La posizione è configurata come Stati Uniti centrali, ma è possibile passare a una località più vicina, se si preferisce.
LOCATION="CentralUS" RESOURCE_GROUP="my-demo-group" IDENTITY_NAME="my-demo-identity" ENVIRONMENT="my-demo-environment" REGISTRY_NAME="mydemoregistry$(openssl rand -hex 4)" CONTAINER_APP_NAME="my-demo-app"Il
mydemoregistry$(openssl rand -hex 4)comando genera una stringa casuale da usare come nome del registro contenitori. I nomi del Registro di sistema devono essere univoci a livello globale, quindi questa stringa consente di garantire che i comandi vengano eseguiti correttamente.Creare un gruppo di risorse per organizzare i servizi correlati alla distribuzione dell'app contenitore.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --output noneCreare un'identità gestita assegnata dall'utente e ottenere il relativo ID con i comandi seguenti.
Creare prima di tutto l'identità gestita.
az identity create \ --name $IDENTITY_NAME \ --resource-group $RESOURCE_GROUP \ --output noneImpostare ora l'identificatore di identità in una variabile per un uso successivo.
IDENTITY_ID=$(az identity show \ --name $IDENTITY_NAME \ --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)Creare un ambiente app contenitore per ospitare l'app usando il comando seguente.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --mi-user-assigned $IDENTITY_ID \ --output noneCreare un'istanza di Registro Azure Container (ACR) nel gruppo di risorse. Il registro archivia l'immagine del contenitore.
az acr create \ --resource-group $RESOURCE_GROUP \ --name $REGISTRY_NAME \ --sku Basic \ --output noneAssegnare l'identità gestita assegnata dall'utente all'istanza del registro contenitori con il comando seguente.
az acr identity assign \ --identities $IDENTITY_ID \ --name $REGISTRY_NAME \ --resource-group $RESOURCE_GROUP \ --output none
Compilare ed eseguire il push dell'immagine in un registro
Compilare ed eseguire il push dell'immagine del contenitore nell'istanza del registro contenitori con il comando seguente.
az acr build \
-t $REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" \
-r $REGISTRY_NAME .
Questo comando applica il tag helloworld all'immagine del contenitore.
Creare l'app contenitore
Creare l'app contenitore con il comando seguente.
az containerapp create \
--name $CONTAINER_APP_NAME \
--resource-group $RESOURCE_GROUP \
--environment $ENVIRONMENT \
--image $REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" \
--target-port 8080 \
--ingress external \
--user-assigned $IDENTITY_ID \
--registry-identity $IDENTITY_ID \
--registry-server $REGISTRY_NAME.azurecr.io \
--query properties.configuration.ingress.fqdn
Questo comando aggiunge il ruolo all'identità gestita assegnata dall'utente, in modo che possa eseguire il acrPull pull delle immagini dal registro contenitori.
Nella tabella seguente vengono descritti i parametri usati da questo comando.
| Parametro | valore | Descrizione |
|---|---|---|
name |
$CONTAINER_APP_NAME |
Nome dell'app contenitore. |
resource-group |
$RESOURCE_GROUP |
Gruppo di risorse in cui viene distribuita l'app contenitore. |
environment |
$ENVIRONMENT |
Ambiente in cui viene eseguita l'app contenitore. |
image |
$REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" |
Immagine del contenitore da distribuire, inclusi il nome e il tag del Registro di sistema. |
target-port |
8080 |
Trova la corrispondenza con la porta a cui l'app è in ascolto per le richieste. |
ingress |
external |
Rende l'app contenitore accessibile dalla rete Internet pubblica. |
user-assigned |
$IDENTITY_ID |
Identità gestita assegnata dall'utente per l'app contenitore. |
registry-identity |
registry-identity |
Identità usata per accedere al registro contenitori. |
registry-server |
$REGISTRY_NAME.azurecr.io |
Indirizzo del server del registro contenitori. |
query |
properties.configuration.ingress.fqdn |
Filtra l'output in modo che solo il nome di dominio completo (FQDN) dell'app. |
Al termine di questo comando, restituisce l'URL per la nuova app Web.
Verificare la distribuzione
Copiare l'URL dell'app in un Web browser. Dopo l'avvio dell'app contenitore, restituisce Hello World!.
Poiché è la prima volta che si accede all'applicazione, l'app potrebbe richiedere alcuni istanti per restituire una risposta.
Pulire le risorse
Se non si intende usare le risorse di Azure create in questa esercitazione, è possibile rimuoverle con un singolo comando. Prima di eseguire il comando, è disponibile un passaggio successivo in questa serie di esercitazioni che illustra come apportare modifiche al codice e aggiornare l'app in Azure.
Se si vuole rimuovere tutte le risorse di Azure create in questa esercitazione, eliminare il gruppo di risorse con il comando seguente.
az group delete --name aca-demo
Suggerimento
Problemi? Segnalare i problemi su GitHub aprendo un ticket nel repository App contenitore di Azure.
Passaggi successivi
Continuare quindi per informazioni su come aggiornare l'app contenitore creata.