Freigeben über


Bereitstellen von Java Spring Boot-Apps für Azure Container Apps

Dieser Artikel erläutert, wie Sie eine Java Spring Boot-App mit Anmeldung mit dem Microsoft Entra-Konto bei Azure Container Apps bereitstellen.

Hier wird davon ausgegangen, dass Sie einen der folgenden Artikel nur mit der Registerkarte Lokal ausführen abgeschlossen haben und jetzt in Azure bereitstellen möchten. Diese Anweisungen entsprechen denen auf der Registerkarte Bereitstellen in Azure in diesen Artikeln:

Voraussetzungen

  • Ein Azure-Konto. Falls Sie nicht über eine Subscription verfügen, können Sie ein kostenloses Konto erstellen. Sie benötigen die Berechtigung Mitwirkender oder Besitzer für das Azure-Abonnement, um den Vorgang fortzusetzen. Weitere Informationen finden Sie unter Weisen Sie Azure-Rollen über das Azure-Portal zu.
  • Die Azure CLI
  • Die Azure Container Apps CLI-Erweiterung, Version 0.3.47 oder höher. Zum Installieren der aktuellen Version verwenden Sie den Befehl az extension add --name containerapp --upgrade --allow-preview.
  • Java Development Kit, Version 17 oder höher.
  • Maven.

Vorbereiten des Spring-Projekts

Bereiten Sie das Projekt mit den folgenden Schritten vor:

  1. Verwenden Sie den folgenden Maven-Befehl, um das Projekt zu erstellen:

    mvn clean verify
    
  2. Führen Sie das Beispielprojekt mit dem folgenden Befehl lokal aus:

    mvn spring-boot:run
    

Setup

Um sich ausgehend von der CLI bei Azure anzumelden, führen Sie den folgenden Befehl aus und befolgen Sie die Anweisungen, um den Authentifizierungsprozess abzuschließen.

az login

Verwenden Sie den Upgradebefehl, um sicherzustellen, dass Sie die neueste Version der CLI ausführen.

az upgrade

Installieren oder aktualisieren Sie als Nächstes die Azure Container Apps-Erweiterung für die CLI.

Wenn Sie beim Ausführen von az containerapp-Befehlen in Azure-CLI Fehlermeldungen über fehlende Parameter erhalten, stellen Sie sicher, dass Sie die neueste Version der Erweiterung für Azure-Container-Apps installiert haben.

az extension add --name containerapp --upgrade

Hinweis

Ab Mai 2024 aktivieren Azure CLI-Erweiterungen standardmäßig keine Previewfunktionen mehr. Um auf Previewfunktionen von Container Apps zuzugreifen, installieren Sie die Container Apps-Erweiterung mit --allow-preview true.

az extension add --name containerapp --upgrade --allow-preview true

Nachdem die aktuelle Erweiterung oder das aktuelle Modul installiert ist, registrieren Sie nun die Namespaces Microsoft.App und Microsoft.OperationalInsights.

Hinweis

Azure Container Apps-Ressourcen wurden vom Microsoft.Web-Namespace zum Microsoft.App-Namespace migriert. Weitere Informationen finden Sie unter Namespacemigration von Microsoft.Web zu Microsoft.App im März 2022.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Erstellen der Azure Container Apps-Umgebung

Nachdem die Einrichtung Ihrer Azure CLI abgeschlossen ist, können Sie die Umgebungsvariablen definieren, die in diesem Artikel verwendet werden.

Definieren Sie die folgenden Variablen in Ihrer Bash-Shell.

export RESOURCE_GROUP="ms-identity-containerapps"
export LOCATION="canadacentral"
export ENVIRONMENT="env-ms-identity-containerapps"
export API_NAME="ms-identity-api"
export JAR_FILE_PATH_AND_NAME="./target/ms-identity-spring-boot-webapp-0.0.1-SNAPSHOT.jar"

Erstellen Sie eine Ressourcengruppe.

az group create  \
    --name $RESOURCE_GROUP \
    --location $LOCATION \

Erstellen Sie eine Umgebung mit einem automatisch generierten Log Analytics-Arbeitsbereich.

az containerapp env create \
    --name $ENVIRONMENT \
    --resource-group $RESOURCE_GROUP \
    --location $LOCATION

Zeigt die Standarddomäne der Container-App-Umgebung an. Notieren Sie sich diese Domäne, um sie in späteren Abschnitten zu verwenden.

az containerapp env show \
    --name $ENVIRONMENT \
    --resource-group $RESOURCE_GROUP \
    --query properties.defaultDomain

Vorbereiten der App zur Bereitstellung

Wenn Sie Ihre Anwendung in Azure Container Apps bereitstellen, ändert sich Ihre Umleitungs-URL in die Umleitungs-URL Ihrer bereitgestellten App-Instanz in Azure Container Apps. Führen Sie die folgenden Schritte aus, um diese Einstellungen in der application.yml-Datei zu ändern:

  1. Navigieren Sie zur Datei src\main\resources\application.yml, und ändern Sie den Wert post-logout-redirect-uri des Domänennamens Ihrer bereitgestellten App hinzu, wie im folgenden Beispiel gezeigt. Achten Sie darauf, dass Sie <API_NAME> und <default-domain-of-container-app-environment> durch die aktuellen Werte ersetzen. Beispielsweise würden Sie mit der Standarddomäne für Ihre Azure Container App-Umgebung aus dem vorherigen Schritt und ms-identity-api für Ihren App-Namen https://ms-identity-api.<default-domain> für den post-logout-redirect-uri-Wert verwenden.

    post-logout-redirect-uri: https://<API_NAME>.<default-domain-of-container-app-environment>
    
  2. Verwenden Sie nach dem Speichern dieser Datei den folgenden Befehl, um Ihre App neu zu erstellen:

    mvn clean package
    

Wichtig

Die application.yml-Datei der Anwendung enthält derzeit den Wert Ihres geheimen Clientschlüssels im client-secret-Parameter. Es empfiehlt sich nicht, diesen Wert in dieser Datei beizubehalten. Möglicherweise gehen Sie ein Risiko ein, wenn Sie die Datei in ein Git-Repository übernehmen. Informationen zum empfohlenen Ansatz finden Sie unter Verwalten von geheimen Schlüsseln in Azure Container Apps.

Aktualisieren Sie die Registrierung Ihrer Microsoft Entra ID-App.

Da sich der Umleitungs-URI in Ihrer bereitgestellten App in Azure Container Apps ändert, müssen Sie auch den Umleitungs-URI in Ihrer Microsoft Entra ID-App-Registrierung ändern. Durchlaufen Sie folgende Schritte, um diese Änderung wirksam zu machen:

  1. Navigieren Sie zur Seite App-Registrierungen von Microsoft Identity Platform für Entwickler.

  2. Verwenden Sie das Suchfeld, um nach Ihrer App-Registrierung zu suchen. Beispiel: java-servlet-webapp-authentication.

  3. Öffnen Sie die App-Registrierung, indem Sie den Namen auswählen.

  4. Wählen Sie im oberen Menü Authentifizierung aus.

  5. Wählen Sie unter Web - Umleitungs-URIs die Option URI hinzufügen aus.

  6. Füllen Sie den URI Ihrer App aus, indem Sie /login/oauth2/code/ anfügen. Beispiel: https://<containerapp-name>.<default domain of container app environment>/login/oauth2/code/.

  7. Wählen Sie Speichern.

Bereitstellen der App

Stellen Sie das JAR-Paket für Azure Container Apps bereit.

Hinweis

Falls erforderlich, können Sie die JDK-Version in den Java-Build-Umgebungsvariablen angeben. Weitere Informationen finden Sie unter Erstellen von Umgebungsvariablen für Java in Azure Container Apps.

Jetzt können Sie Ihre WAR-Datei mit dem CLI-Befehl az containerapp up bereitstellen.

az containerapp up \
    --name $API_NAME \
    --resource-group $RESOURCE_GROUP \
    --location $LOCATION \
    --environment $ENVIRONMENT \
    --artifact <JAR_FILE_PATH_AND_NAME> \
    --ingress external \
    --target-port 8080 \
    --query properties.configuration.ingress.fqdn

Hinweis

Die JDK-Standardversion ist 17. Wenn Sie die JDK-Version für die Kompatibilität mit Ihrer Anwendung ändern müssen, können Sie die Versionsnummer mit dem Argument --build-env-vars BP_JVM_VERSION=<YOUR_JDK_VERSION> anpassen.

Weitere Buildumgebungsvariablen finden Sie unter Buildumgebungsvariablen für Java in Azure Container Apps.

Überprüfen der App

In diesem Beispiel enthält der containerapp up-Befehl das --query properties.configuration.ingress.fqdn-Argument, das den vollqualifizierten Domänennamen (Fully Qualified Domain Name, FQDN) zurückgibt, der auch als URL der App bezeichnet wird. Verwenden Sie die folgenden Schritte, um die Protokolle der App zu überprüfen, um Bereitstellungsprobleme zu untersuchen:

  1. Greifen Sie auf die URL der Ausgabeanwendung auf der Seite Ausgaben des Abschnitts Bereitstellung zu.

  2. Wählen Sie im Navigationsbereich der Azure Container Apps-Instanz Übersicht die Option Protokolle, um die Protokolle der App zu überprüfen.

Weitere Informationen

Nächste Schritte

Weitere Informationen zu diesen und anderen Bereitstellungsfunktionen finden Sie in den folgenden Artikeln: