Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
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.csin 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 ReleaseFühren Sie als Nächstes die Anwendung aus, um zu überprüfen, ob der Code ordnungsgemäß implementiert ist.
dotnet run --configuration ReleaseNachdem 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.
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
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 loginInstallieren oder aktualisieren Sie die Azure Container Apps-Erweiterung für die Azure CLI.
az extension add --name containerapp --upgradeHinweis
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.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.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 noneErstellen 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 noneLegen 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)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 noneErstellen 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 noneWeisen 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: