Freigeben über


Tutorial: Erstellen und Bereitstellen über Quellcode in Azure Container Apps

In diesem Artikel erfahren Sie, wie Sie über Quellcode auf Ihrem Computer in Ihrer bevorzugten Programmiersprache eine Anwendung in Azure Container Apps erstellen und bereitstellen.

In diesem Tutorial führen Sie Folgendes durch:

  • Erstellen einer einfachen Webanwendung
  • Erstellen eines zugehörigen Dockerfile für Ihre App
  • Erstellen eines Images aus dem kompilierten Code und Pushen an eine Containerregistrierung
  • Verwenden einer verwalteten Identität für den sicheren Zugriff auf Ihre Containerregistrierung
  • Bereitstellen Ihres Containers in Azure Container Apps
  • Anzeigen der App in einem Browser, um die Bereitstellung zu überprüfen

Voraussetzungen

Zum Abschließen dieses Projekts benötigen Sie die folgenden Elemente:

Anforderung Anweisungen
Azure-Konto Erstellen Sie ein kostenloses Konto, falls Sie keines besitzen. Sie benötigen die Berechtigung Mitwirkender oder Besitzer für das Azure-Abonnement, um den Vorgang fortzusetzen.

Weitere Einzelheiten finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.
Azure-Befehlszeilenschnittstelle Installieren Sie die Azure-Befehlszeilenschnittstelle, oder upgraden Sie sie auf die neueste Version. Azure Developer CLI (azd-Befehle) ist über die Azure CLI verfügbar.

Je nach ausgewählter Sprache müssen Sie möglicherweise auch die entsprechende Laufzeit, das SDK und andere Abhängigkeiten installieren.

Installieren Sie das .NET SDK.

Erstellen der lokalen Anwendung

Die folgenden Schritte zeigen den Code und die Abhängigkeiten, die zum Erstellen einer Beispielanwendung zum Bereitstellen in Azure Container Apps erforderlich sind.

Hinweis

Wenn Sie eine andere Sprache als die aufgeführten verwenden möchten, geben Sie den folgenden Prompt in Ihr bevorzugtes KI-Modell ein.

Bevor Sie den Prompt übermitteln, ersetzen Sie <LANGUAGE> durch Ihre gewünschte Sprache.

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. 
  1. Erstellen Sie den Quellcode, und führen Sie ihn aus.

    Erstellen Sie ein neues C#-Projekt.

    dotnet new webapp --name MyAcaDemo --language C#
    

    Wechseln Sie in den Ordner MyAcaDemo.

    cd MyAcaDemo
    

    Öffnen Sie Program.cs in einem Code-Editor, und ersetzen Sie den Inhalt durch folgenden Code:

    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");
                });
    }
    

    Durch die Implementierung der Program-Klasse mit diesem Code wird die Grundlage einer Webanwendung erstellt. Erstellen Sie als Nächstes eine Klasse, die für die Rückgabe einer Webseite als Antwort verantwortlich ist.

    Erstellen Sie im selben Ordner eine neue Datei mit dem Namen Startup.cs, und geben Sie den folgenden Code ein:

    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!");
                });
            });
        }
    }
    

    Wenn nun eine Anforderung an Ihre Webanwendung gesendet wird, wird der Text „Hallo Welt!“ zurückgegeben. Um zu überprüfen, ob der Code auf dem lokalen Computer ordnungsgemäß ausgeführt wird, erstellen Sie Ihr Projekt in der Releasekonfiguration.

    dotnet build -c Release
    

    Führen Sie als Nächstes die Anwendung aus, um zu überprüfen, ob der Code ordnungsgemäß implementiert ist.

    dotnet run --configuration Release
    

    Nachdem Sie überprüft haben, ob die Anwendung wie erwartet funktioniert, können Sie den lokalen Server beenden und mit dem Erstellen eines Dockerfile fortfahren, damit Sie die App in Container Apps bereitstellen können.

  2. Erstellen Sie im Ordner MyAcaDemo eine Datei mit dem Namen Dockerfile, und fügen Sie den folgenden Inhalt hinzu:

    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"]
    

    Nachdem der Code und das Dockerfile vorbereitet wurden, können Sie Ihre App in Azure Container Apps bereitstellen.

Erstellen von Azure-Ressourcen

  1. Melden Sie sich mithilfe des folgenden Befehls über die CLI bei Azure an. Achten Sie darauf, alle Eingabeaufforderungen zu befolgen, um den Authentifizierungsprozess abzuschließen.

    az login
    
  2. Installieren oder aktualisieren Sie die Azure Container Apps-Erweiterung für die Azure CLI.

    az extension add --name containerapp --upgrade
    

    Hinweis

    Wenn Sie beim Ausführen von az containerapp-Befehlen Fehlermeldungen im Zusammenhang mit fehlenden Parametern erhalten, stellen Sie sicher, dass Sie die aktuelle Version der Erweiterung für Azure Container Apps installiert haben.

  3. Nachdem die Einrichtung der Azure CLI abgeschlossen ist, können Sie nun die Umgebungsvariablen definieren.

    Bevor Sie den folgenden Befehl ausführen, überprüfen Sie die angegebenen Werte.

    Für den Standort wurde USA, Mitte konfiguriert, Sie können diesen aber bei Bedarf in einen Standort in Ihrer Nähe ändern.

    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"
    

    Der Befehl mydemoregistry$(openssl rand -hex 4) generiert eine zufällige Zeichenfolge, die als Containerregistrierungsname verwendet wird. Registrierungsnamen müssen global eindeutig sein, sodass diese Zeichenfolge zur erfolgreichen Ausführung Ihrer Befehle beiträgt.

  4. Erstellen Sie eine Ressourcengruppe, um die Dienste im Zusammenhang mit der Bereitstellung Ihrer Container-App zu organisieren.

    az group create \
      --name $RESOURCE_GROUP \
      --location $LOCATION \
      --output none
    
  5. Erstellen Sie eine benutzerseitig zugewiesene verwaltete Identität, und rufen Sie ihre ID mit den folgenden Befehlen ab.

    Erstellen Sie zunächst die verwaltete Identität.

    az identity create \
        --name $IDENTITY_NAME \
        --resource-group $RESOURCE_GROUP \
        --output none
    

    Legen Sie nun den Identitätsbezeichner zur späteren Verwendung auf eine Variable fest.

    IDENTITY_ID=$(az identity show \
      --name $IDENTITY_NAME \
      --resource-group $RESOURCE_GROUP \
      --query id \
      --output tsv)
    
  6. Erstellen Sie mit dem folgenden Befehl eine Container Apps-Umgebung zum Hosten Ihrer App:

    az containerapp env create \
        --name $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION \
        --mi-user-assigned $IDENTITY_ID \
        --output none
    
  7. Erstellen Sie eine Azure Container Registry-Instanz (ACR) in Ihrer Ressourcengruppe. Die Registrierung speichert Ihr Containerimage.

    az acr create \
      --resource-group $RESOURCE_GROUP \
      --name $REGISTRY_NAME \
      --sku Basic \
      --output none
    
  8. Weisen Sie mit dem folgenden Befehl Ihrer Containerregistrierungsinstanz die benutzerseitig zugewiesene verwaltete Identität zu:

    az acr identity assign \
      --identities $IDENTITY_ID \
      --name $REGISTRY_NAME \
      --resource-group $RESOURCE_GROUP \
      --output none
    

Erstellen des Images und Pushen des Images an eine Registrierung

Mit dem folgenden Befehl können Sie das Containerimage erstellen und an Ihre Containerregistrierungsinstanz pushen:

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

Dieser Befehl wendet das Tag helloworld auf Ihr Containerimage an.

Erstellen Ihrer Container-App

Erstellen Sie Ihre Container App mit dem folgenden Befehl:

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

Mit diesem Befehl wird der benutzerseitig zugewiesenen verwalteten Identität die Rolle acrPull hinzugefügt, sodass Images aus der Containerregistrierung gepullt werden können.

In der folgenden Tabelle sind die Parameter beschrieben, die von diesem Befehl verwendet werden.

Parameter Wert Beschreibung
name $CONTAINER_APP_NAME Der Name Ihrer Container-App
resource-group $RESOURCE_GROUP Die Ressourcengruppe, in der die Container-App bereitgestellt wird
environment $ENVIRONMENT Die Umgebung, in der Ihre Container-App ausgeführt wird
image $REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" Das bereitzustellende Containerimage, einschließlich des Registrierungsnamens und -tags
target-port 8080 Entspricht dem Port, an dem Ihre App auf Anforderungen lauscht.
ingress external Macht Ihre Container-App über das öffentliche Internet zugänglich.
user-assigned $IDENTITY_ID Die benutzerseitig zugewiesene verwaltete Identität für Ihre Container-App
registry-identity registry-identity Die zum Zugreifen auf die Containerregistrierung verwendete Identität
registry-server $REGISTRY_NAME.azurecr.io Die Serveradresse Ihrer Containerregistrierung
query properties.configuration.ingress.fqdn Filtert die Ausgabe nur auf den vollqualifizierten Domänennamen (Fully Qualified Domain Name, FQDN) der App.

Sobald dieser Befehl abgeschlossen ist, wird die URL für Ihre neue Web-App zurückgegeben.

Überprüfen der Bereitstellung

Kopieren Sie die App-URL in einen Webbrowser. Nachdem die Container-App gestartet wurde, gibt sie Hallo Welt! zurück.

Da die Anwendung zum ersten Mal aufgerufen wird, kann es einige Minuten dauern, bis die App eine Antwort zurückgibt.

Bereinigen von Ressourcen

Wenn Sie die in diesem Tutorial erstellten Azure-Ressourcen nicht mehr verwenden werden, können Sie sie mit einem einzigen Befehl entfernen. Bevor Sie den Befehl ausführen, gibt es einen nächsten Schritt in dieser Tutorialreihe, der zeigt, wie Sie Änderungen am Code vornehmen und Ihre App in Azure aktualisieren.

Wenn Sie fertig sind und alle in diesem Tutorial erstellten Azure-Ressourcen entfernen möchten, löschen Sie die Ressourcengruppe mit dem folgenden Befehl:

az group delete --name aca-demo

Tipp

Treten Probleme auf? Informieren Sie uns über GitHub, indem Sie ein Problem im Azure Container Apps-Repository öffnen.

Nächste Schritte

Lesen Sie als Nächstes, wie Sie die von Ihnen erstellte Container-App aktualisieren: