Freigeben über


Bereitstellen einer Spring Boot-Anwendung auf Linux im Azure App Service

Dieses Tutorial führt Sie durch die Verwendung von Docker, um Ihre Spring Boot-Anwendung zu containerisieren und Ihr eigenes Docker-Image auf einem Linux-Host im Azure App Servicebereitzustellen.

Voraussetzungen

Um die Schritte in diesem Lernprogramm ausführen zu können, müssen Sie über die folgenden Voraussetzungen verfügen:

Anmerkung

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

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

Die folgenden Schritte führen Sie durch die Schritte, die zum Erstellen einer einfachen Spring Boot-Webanwendung erforderlich sind, und testen Sie sie lokal.

  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; Zum Beispiel:

    mvn package
    
  5. Nachdem die Web-App erstellt wurde, ändern Sie das Verzeichnis in das target Verzeichnis, in dem sich die JAR-Datei befindet, und starten Sie die Web-App. Zum 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 lokal mit einem Webbrowser darauf navigieren. Wenn Sie z. B. curl verfügbar haben und den Tomcat-Server so konfiguriert haben, dass er auf Port 80 ausgeführt wird:

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

    Lokales Durchsuchen von Beispiel-Apps

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

Die folgenden Schritte erklären die Verwendung des Azure-Portals, um eine Azure-Containerregistrierung zu erstellen.

Anmerkung

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

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

    Nachdem Sie sich im Azure-Portal bei Ihrem Konto angemeldet haben, führen Sie die Schritte im Artikel Erstellen einer privaten Docker-Containerregistrierung mithilfe des Azure-Portals aus, der zur Vereinfachung in den folgenden Schritten paraphrasiert 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.

    Erstellen einer neuen Azure-Containerregistrierung

  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.

    Konfigurieren der Azure-Containerregistrierungseinstellungen

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

    Aktivieren der Administrator-Benutzeroberfläche im Azure-Portal

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

  1. Navigieren Sie zum abgeschlossenen Projektverzeichnis 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 pom.xml Datei 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. Zum 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 Bilds an, das aus der Basis in <to>/<image>erstellt werden soll.

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

    <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 zum abgeschlossenen Projektverzeichnis für Ihre Spring Boot-Anwendung, und führen Sie den folgenden Befehl aus, um die Anwendung neu zu erstellen und den Container an Ihre Azure-Containerregistrierung zu übertragen:

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

Anmerkung

  1. Mit dem Befehl az acr login ... wird versucht, die Anmeldung bei Azure Container Registry durchzuführen. Andernfalls müssen Sie <username> und <password> für „jib-maven-plugin“ angeben. Weitere Informationen finden Sie unter Authentifizierungsmethoden in Jib.
  2. Wenn Sie Jib verwenden, um Ihr Image in die Azure Container Registry zu übertragen, verwendet das Image Dockerfile nicht. Ausführliche Informationen dazu finden Sie in diesem Dokument.

Erstellen einer Web-App unter Linux auf Azure App Service mithilfe Ihres Containerimages

  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.

    Erstellen einer neuen Web-App im 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 Ressourcengruppeaus, 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öffentlichen Docker Container an.

    • Wählen Sie im Feld Betriebssystem 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.

    Klicken Sie auf die Schaltfläche

    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.

    • Registry: Wählen Sie Ihren Container, zum Beispiel: 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, zum Beispiel: latest.

    • Startup-Befehl: Lassen Sie dieses Feld leer, da das Image bereits den Startbefehl enthält.

    Nachdem Sie alle oben genannten Informationen eingegeben haben, wählen Sie Bewerten + erstellen aus.

    Fertig stellen, indem Sie

    • 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.

Abrufen der Bereitstellungs-URL

Anmerkung

Azure ordnet Internetanforderungen automatisch dem eingebetteten Tomcat-Server zu, der auf dem Port - 80 ausgeführt wird. Wenn Sie den eingebetteten Tomcat-Server jedoch für die Ausführung auf Port 8080 oder benutzerdefiniertem Port konfiguriert haben, 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 namens WEBSITES_PORT hinzu, und geben Sie die benutzerdefinierte Portnummer für den Wert ein.

  5. Wählen Sie OKaus. Klicken Sie dann auf Speichern.

Speichern einer benutzerdefinierten Portnummer im Azure-Portal

Bereinigen von Ressourcen

Wenn sie nicht mehr benötigt wird, verwenden Sie das Azure-Portal, um die in diesem Artikel erstellten Ressourcen zu löschen, um unerwartete Gebühren zu vermeiden.

Nächste Schritte

Um mehr über Spring und Azure zu erfahren, fahren Sie mit dem Spring on Azure-Dokumentationscenter fort.

Weitere Informationen

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 Arbeiten mit Azure DevOps und Java.

Weitere Details zum Spring Boot on Docker-Beispielprojekt finden Sie unter Spring Boot on Docker Getting Started.

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 für die Verwendung benutzerdefinierter Docker-Images mit Azure finden Sie unter Verwenden eines benutzerdefinierten Docker-Images für Azure Web App unter Linux.