Share via


Bereitstellen einer Spring Boot-Anwendung für Linux in Azure App Service

In diesem Tutorial wird die Verwendung von Docker zum Packen Ihrer Spring Boot-Anwendung in Container und zum Bereitstellen Ihres eigenen Docker-Images für einen Linux-Host in Azure App Service erläutert.

Voraussetzungen

Zur Durchführung der Schritte in diesem Tutorial benötigen Sie Folgendes:

Hinweis

Aufgrund der Virtualisierungsanforderungen dieses Tutorials können Sie die Schritte in diesem Artikel nicht auf einem virtuellen Computer ausführen; Sie müssen einen physischen Computer mit aktivierten Virtualisierungsfunktionen verwenden.

Erstellen der Web-App für erste Schritte mit Spring Boot in Docker

Die folgende Anleitung führt Sie durch die erforderlichen Schritte für das Erstellen einer einfachen Spring Boot-Webanwendung und das lokale Testen.

  1. Öffnen Sie eine Eingabeaufforderung, erstellen Sie ein lokales Verzeichnis zum Speichern Ihrer Anwendung, und wechseln Sie in dieses Verzeichnis. Beispiel:

    mkdir SpringBoot
    cd SpringBoot
    
  2. Klonen Sie das Beispielprojekt Erste Schritte mit Spring Boot in Docker in das Verzeichnis, das Sie gerade erstellt haben. Beispiel:

    git clone https://github.com/spring-guides/gs-spring-boot-docker.git
    
  3. Wechseln Sie in das Verzeichnis mit dem abgeschlossenen Projekt. Beispiel:

    cd gs-spring-boot-docker/complete
    
  4. Erstellen Sie die JAR-Datei mit Maven. Beispiel:

    mvn package
    
  5. Wechseln Sie nach dem Erstellen der Web-App in das Verzeichnis target mit der JAR-Datei, und starten Sie die Web-App. Beispiel:

    cd target
    java -jar spring-boot-docker-complete-0.0.1-SNAPSHOT.jar --server.port=80
    
  6. Testen Sie die Web-App, indem Sie sie lokal mit einem Webbrowser durchsuchen. Wenn beispielsweise cURL verfügbar ist und Sie den Tomcat-Server so konfiguriert haben, dass er an Port 80 ausgeführt wird:

    curl http://localhost
    
  7. Die folgende Meldung sollte angezeigt werden: Hello Docker World!

    Browse Sample App Locally

Erstellen einer Azure-Containerregistrierung, die als private Docker-Registrierung verwendet werden soll

Die folgende Anleitung führt Sie durch die Verwendung des Azure-Portals zur Erstellung einer Azure Container Registry-Instanz.

Hinweis

Wenn Sie statt des Azure-Portals die Azure CLI verwenden möchten, führen Sie die Schritte unter Erstellen einer privaten Docker-Containerregistrierung mit der Azure CLI 2.0 aus.

  1. Navigieren Sie zum Azure-Portal, und melden Sie sich an.

    Nachdem Sie sich auf dem Azure-Portal bei Ihrem Konto angemeldet haben, führen Sie die Schritte in der Registrierung eines privaten Docker-Containers mithilfe des Artikels Azure-Portal aus, der in den folgenden Schritten zur Beschleunigung paraphraseniert wird.

  2. Klicken Sie auf das Menüsymbol für Neu, und wählen Sie die Option Container und anschließend Azure Container Registry aus.

    Create a new Azure Container Registry

  3. Wenn die Seite Containerregistrierung erstellen angezeigt wird, geben Sie Werte für Registrierungsname, Abonnement, Ressourcengruppe und Standort ein. Wählen Sie dann Erstellen aus.

    Configure Azure Container Registry settings

  4. Wählen Sie unter Einstellungen die Option Zugriffsschlüssel aus, und aktivieren Sie den Schalter Aktiviert hinter der Option Administratorbenutzer.

    Enable admin user UI in the Azure portal

Konfigurieren von Maven für die Erstellung eines Images für Ihre Azure Container Registry-Instanz

  1. Navigieren Sie zum Verzeichnis des abgeschlossenen Projekts für Ihre Spring Boot-Anwendung (z.B. „C:\SpringBoot\gs-spring-boot-docker\complete“ oder „/users/robert/SpringBoot/gs-spring-boot-docker/complete“), und öffnen Sie die Datei pom.xml mit einem Text-Editor.

  2. Aktualisieren Sie die Auflistung <properties> in der Datei pom.xml mit der aktuellen Version von jib-maven-plugin, dem Wert des Anmeldeservers und den Zugriffseinstellungen für Ihre Azure Container Registry-Instanz aus dem vorherigen Abschnitt dieses Tutorials. Beispiel:

    <properties>
       <jib-maven-plugin.version>3.2.0</jib-maven-plugin.version>
       <docker.image.prefix>wingtiptoysregistry.azurecr.io</docker.image.prefix>
       <java.version>1.8</java.version>
    </properties>
    
  3. Fügen Sie jib-maven-plugin der Sammlung <plugins> in der Datei pom.xml hinzu. In diesem Beispiel wird Version 3.2.0 verwendet.

    Geben Sie das Basisimage (in diesem Fall mcr.microsoft.com/openjdk/jdk:11-ubuntu) unter <from>/<image> an. Geben Sie den Namen des endgültigen Images, das auf der Grundlage des Basisimages erstellt werden soll, unter <to>/<image> an.

    Das {docker.image.prefix}-Element für die Authentifizierung ist der Anmeldeserver auf der zuvor gezeigten Registrierungsseite. {project.artifactId} ist der Name und die Versionsnummer der JAR-Datei aus dem ersten Maven-Build des Projekts.

    <plugin>
      <artifactId>jib-maven-plugin</artifactId>
      <groupId>com.google.cloud.tools</groupId>
      <version>${jib-maven-plugin.version}</version>
      <configuration>
         <from>
             <image>mcr.microsoft.com/openjdk/jdk:11-ubuntu</image>
         </from>
         <to>
             <image>${docker.image.prefix}/${project.artifactId}</image>
         </to>
      </configuration>
    </plugin>
    
  4. Navigieren Sie zu dem abgeschlossenen Projektverzeichnis für Ihre Spring Boot-Anwendung, und führen Sie den folgenden Befehl aus, um die Anwendung erneut zu erstellen und den Container in die Azure-Containerregistrierung zu übertragen:

    az acr login --name wingtiptoysregistry && mvn compile jib:build
    

Hinweis

  1. Der Befehl az acr login ... versucht, sich bei der Azure-Containerregistrierung anzumelden, andernfalls müssen Sie jib-maven-plugin angeben <username> , <password> siehe Authentifizierungsmethoden im Jib.
  2. Wenn Sie Jib verwenden, um Ihr Image an die Azure-Containerregistrierung zu übertragen, wird das Image nicht die Dockerfile-Datei verwenden. Weitere Informationen finden Sie in diesem Dokument.

Erstellen einer Web-App unter Linux in Azure App Service über Ihr Containerimage

  1. Navigieren Sie zum Azure-Portal, und melden Sie sich an.

  2. Klicken Sie auf das Menüsymbol für Ressource erstellen, und wählen Sie dann Compute und Web-App aus.

    Create a new web app in the Azure portal

  3. Wenn die Seite Web-App unter Linux angezeigt wird, geben Sie folgende Informationen ein:

    • Wählen Sie Ihr Abonnement aus der Dropdown-Liste aus.

    • Wählen Sie eine vorhandene Ressourcengruppe aus, oder geben Sie einen Namen an, um eine neue Ressourcengruppe zu erstellen.

    • Geben Sie einen eindeutigen Namen für App-Name ein, z. B. wingtiptoyslinux.

    • Geben Sie unter VeröffentlichenDocker Container an.

    • Wählen Sie unter Betriebssystem die Option Linux aus.

    • Wählen Sie Region aus.

    • Wählen Sie unter Linux-Plan einen vorhandenen App Service-Plan aus. Wählen Sie alternativ die Option Neu erstellen aus, um einen neuen App Service-Plan zu erstellen.

    • Klicken Sie auf Weiter: Docker.

    Click the Next: Docker button to proceed.

    Wählen Sie auf der Seite Web-App die Option Docker aus, und geben Sie die folgenden Informationen ein:

    • Wählen Sie Einzelner Container aus.

    • Registrierung: Wählen Sie Ihren Container aus, z. B. "wingtiptoysregistry"

    • Image: Wählen Sie das zuvor erstellte Image aus, z. B. spring-boot-docker.

    • Tag: Wählen Sie das Tag für das Bild aus, z. B. "neueste"

    • Startbefehl: Leer lassen, da das Bild bereits über den Startbefehl verfügt

    Nachdem Sie alle oben genannten Informationen eingegeben haben, wählen Sie "Überprüfen" und "Erstellen" aus.

    Finish by selecting Review + Create.

    • Klicken Sie auf Überprüfen + erstellen.

Überprüfen Sie die Informationen, und wählen Sie Erstellen aus.

Wählen Sie nach Abschluss der Bereitstellung die Option Zu Ressourcengruppe wechseln. Auf der Bereitstellungsseite wird die URL für den Zugriff auf die Anwendung angezeigt.

Get URL of deployment

Hinweis

Azure ordnet dem eingebetteten Tomcat-Server, der an Port 80 ausgeführt wird, automatisch Internetanforderungen zu. Wenn Sie Ihren eingebetteten Tomcat-Server aber so konfiguriert haben, dass er an Port 8080 oder einem benutzerdefinierten Port ausgeführt wird, müssen Sie Ihrer Web-App eine Umgebungsvariable hinzufügen, die den Port für Ihren eingebetteten Tomcat-Server definiert. Führen Sie dazu die folgenden Schritte aus:

  1. Navigieren Sie zum Azure-Portal, und melden Sie sich an.

  2. Wählen Sie das Symbol für Web-Apps und auf der Seite App Services Ihre App aus.

  3. Wählen Sie im Navigationsbereich auf der linken Seite die Option Konfiguration aus.

  4. Fügen Sie im Abschnitt Anwendungseinstellungen eine neue Einstellung mit dem Namen WEBSITES_PORT hinzu, und geben Sie Ihre benutzerdefinierte Portnummer für den Wert ein.

  5. Klickan Sie auf OK. Klicken Sie dann auf Speichern.

Saving a custom port number in the Azure portal

Bereinigen von Ressourcen

Verwenden Sie das Azure-Portal, um die in diesem Artikel erstellten Ressourcen zu löschen, wenn Sie sie nicht mehr benötigen, um unerwartete Gebühren zu vermeiden.

Nächste Schritte

Weitere Informationen zu Spring und Azure finden Sie im Dokumentationscenter zu Spring in Azure.

Siehe auch

Weitere Informationen zur Verwendung von Spring Boot-Anwendungen in Azure finden Sie in den folgenden Artikeln:

Weitere Informationen zur Verwendung von Azure mit Java finden Sie unter Azure für Java-Entwickler und Working with Azure DevOps and Java (Arbeiten mit Azure DevOps und Java).

Weitere Informationen zum Spring Boot-Beispielprojekt in Docker finden Sie unter Erste Schritte mit Spring Boot.

Hilfe zu den ersten Schritten mit eigenen Spring Boot-Anwendungen finden Sie bei Spring Initializr unter https://start.spring.io/.

Weitere Informationen zu den ersten Schritten beim Erstellen einer einfachen Spring Boot-Anwendung finden Sie bei Spring Initializr unter https://start.spring.io/.

Weitere Beispiele zur Vorgehensweise bei der Verwendung benutzerdefinierter Docker-Images mit Azure finden Sie unter Verwenden eines benutzerdefinierten Docker-Images für Azure-Web-Apps unter Linux.