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

In diesem Lernprogramm wird gezeigt, wie Sie Docker verwenden, um Ihre Spring Boot-Anwendung zu containern und Ihr eigenes Docker-Image auf einem Linux-Host im Azure App Service bereitzustellen.

Voraussetzungen

Zum Ausführen der Schritte in diesem Lernprogramm benötigen Sie die folgenden Voraussetzungen:

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, und erstellen Sie ein lokales Verzeichnis, um Ihre Anwendung zu speichern, und wechseln Sie zu diesem Verzeichnis. Zum 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. 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 wird angezeigt: Hello Docker World

    Lokales Durchsuchen von Beispiel-Apps

Erstellen einer Azure Container Registry, 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 in der Registrierung eines privaten Docker-Containers mithilfe des Azure-Portalartikels aus. Die folgenden Schritte geben diese Anweisungen der Einfachheit halber sinngemäß wieder.

  2. Wählen Sie das Menüsymbol für "Neu" aus, wählen Sie "Container" und dann Azure Container Registry aus.

    Erstellen einer neuen Azure-Containerregistrierung

  3. Wenn die Seite " Containerregistrierung erstellen " angezeigt wird, geben Sie Registrierungsname, Abonnement, Ressourcengruppe und Speicherort ein. Wählen Sie anschließend Erstellen aus.

    Konfigurieren der Azure-Containerregistrierungseinstellungen

  4. Wählen Sie unter "Einstellungen"Die Zugriffstasten aus, und aktivieren Sie die Option "Aktiviert" für den 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. Wechseln 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 den <properties>-Abschnitt in der pom.xml-Datei mit der neuesten Version von jib-maven-plugin, dem Wert des Anmeldeservers und den Zugriffseinstellungen für Ihre Azure Container Registry 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 <plugins>-Sammlung 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 an, das aus der Basis erstellt werden soll.<to>/<image>

    Die Authentifizierung {docker.image.prefix} ist der Server für die Anmeldung auf der zuvor gezeigten Registry-Seite. 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. Wechseln 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 Container Registry zu übertragen:

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

Anmerkung

Der Befehl az acr login ... versucht, sich bei Azure Container Registry anzumelden. Andernfalls müssen Sie angeben <username> und <password> für jib-maven-plugin. Weitere Informationen finden Sie unter "Authentifizierungsmethoden im Jib".

Wenn Sie Jib verwenden, um Ihr Image an die Azure Container Registry zu übertragen, verwendet das Image nicht die Dockerfile.When you use Jib to push your image to the Azure Container Registry, the image doesn't use the Dockerfile. Weitere Informationen finden Sie in diesem Artikel.

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. Wählen Sie das Menüsymbol für "Ressource erstellen", wählen Sie "Berechnen" und dann "Web App" aus.

    Erstellen einer neuen Web-App im Azure-Portal

  3. Wenn die Seite Web App on Linux angezeigt wird, geben Sie die folgenden 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 den App-Namen ein; Beispiel: wingtiptoyslinux.

    • Geben Sie unter VeröffentlichenDocker Container an.

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

    • Wählen Sie "Weiter" aus: 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.

    • Startbefehl: Lassen Sie sie leer, da das Image bereits über den Startbefehl verfügt.

    Nachdem Sie alle vorherigen Informationen eingegeben haben, wählen Sie "Überprüfen" und "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 Ressource 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 Port 80 ausgeführt wird. Wenn Sie den eingebetteten Tomcat-Server jedoch so konfigurieren, dass er auf 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 die folgenden Schritte aus, um die Umgebungsvariable hinzuzufügen:

  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 die Ressourcen nicht mehr benötigen, verwenden Sie das Azure Portal, um sie zu löschen. Durch das Löschen der Ressourcen können Sie unerwartete Gebühren 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 von benutzerdefinierten Docker-Images mit Azure finden Sie unter Verwenden eines benutzerdefinierten Docker-Images für Azure Web App unter Linux.