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:
- Ein Azure-Abonnement – wenn Sie noch kein Azure-Abonnement besitzen, können Sie Ihre MSDN-Abonnentenvorteile anwenden oder sich für ein Kostenloses Azure-Konto registrieren
- Die Azure-Befehlszeilenschnittstelle (CLI)
- Ein unterstütztes Java Development Kit (JDK). Weitere Informationen zu den JDKs, die für die Entwicklung in Azure verfügbar sind, finden Sie im Artikel zur Java-Unterstützung in Azure und Azure Stack.
- Apache Maven-Buildtool (Version 3).
- Einen Git-Client
- Einen Docker-Client
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.
Ö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. Beispiel:
mvn package
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
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
Die folgende Meldung sollte angezeigt werden: Hello Docker World!
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.
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.
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 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.
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>
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>
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
- 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. - 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
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 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öffentlichen
Docker 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.
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.
- 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.
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:
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 mit dem Namen WEBSITES_PORT hinzu, und geben Sie Ihre benutzerdefinierte Portnummer für den Wert ein.
Klickan Sie auf OK. Klicken Sie dann auf Speichern.
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:
- Deploy a Spring Boot Application on a Kubernetes Cluster in the Azure Container Service (Bereitstellen einer Spring Boot-Anwendung in einem Kubernetes-Cluster in Azure Container Service)
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.