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:
- Ein Azure-Abonnement; Wenn Sie noch nicht über ein Azure-Abonnement verfügen, können Sie Ihre MSDN-Abonnentenvorteile aktivieren oder sich für ein kostenloses Azure-Kontoregistrieren.
- Die Azure-Befehlszeilenschnittstelle (CLI)
- Ein unterstütztes Java Development Kit (JDK). Weitere Informationen zu den für die Entwicklung in Azure verfügbaren JDKs finden Sie unter Java-Unterstützung für Azure und Azure Stack.
- Apache Maven-Buildtool (Version 3).
- Einen Git-Client
- Einen Docker-Client
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.
Öffnen Sie eine Eingabeaufforderung, erstellen Sie ein lokales Verzeichnis zum Speichern Ihrer Anwendung, und wechseln Sie in dieses Verzeichnis. Beispiel:
mkdir SpringBoot cd SpringBoot
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
Wechseln Sie in das Verzeichnis mit dem abgeschlossenen Projekt. Beispiel:
cd gs-spring-boot-docker/complete
Erstellen Sie die JAR-Datei mit Maven; Zum Beispiel:
mvn package
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
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
Die folgende Meldung sollte angezeigt werden: Hello Docker World
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.
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.
Klicken Sie auf das Menüsymbol für Neu, und wählen Sie die Option Container und anschließend Azure Container Registry aus.
Wenn die Seite Containerregistrierung erstellen angezeigt wird, geben Sie Werte für Registrierungsname, Abonnement, Ressourcengruppe und Standort ein. Wählen Sie dann Erstellen aus.
Wählen Sie unter Einstellungen die Option Zugriffsschlüssel aus, und aktivieren Sie den Schalter Aktiviert hinter der Option Administratorbenutzer.
Konfigurieren von Maven für die Erstellung eines Images für Ihre Azure Container Registry-Instanz
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.
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>
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>
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
- 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. - 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
Navigieren Sie zum Azure-Portal und melden Sie sich an.
Klicken Sie auf das Menüsymbol für Ressource erstellen, und wählen Sie dann Compute und Web-App aus.
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.
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.
- 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.
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:
Navigieren Sie zum Azure-Portal, und melden Sie sich an.
Wählen Sie das Symbol für Web-Apps und auf der Seite App Services Ihre App aus.
Wählen Sie im Navigationsbereich auf der linken Seite die Option Konfiguration aus.
Fügen Sie im Abschnitt Anwendungseinstellungen eine neue Einstellung namens WEBSITES_PORT hinzu, und geben Sie die benutzerdefinierte Portnummer für den Wert ein.
Wählen Sie OKaus. Klicken Sie dann auf Speichern.
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.