Freigeben über


Bereitstellen einer Quarkus-Web-App in Azure App Service mit Maven

In dieser Schnellstartanleitung wird das Maven-Plug-In für Azure App Service-Web-Apps verwendet, um eine Quarkus-Anwendung in Azure App Service für Linux bereitzustellen. Es empfiehlt sich, eine Java SE-Bereitstellung über Tomcat- und WAR-Dateien zu wählen, wenn Sie die Abhängigkeiten, Runtime und Konfiguration Ihrer App in einem einzigen bereitstellbaren Artefakt zusammenfassen möchten.

Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Voraussetzungen

Anmelden bei der Azure-Befehlszeilenschnittstelle

Bei Verwendung des Maven-Plug-Ins lässt sich die Quarkus-Anwendung am einfachsten und komfortabelsten über die Azure-Befehlszeilenschnittstelle bereitstellen.

Melden Sie sich mithilfe der Azure CLI bei Ihrem Azure-Konto an:

az login

Folgen Sie den Anweisungen, um den Anmeldevorgang abzuschließen.

Erstellen einer Beispiel-App über MicroProfile Starter

In diesem Abschnitt wird eine Quarkus-Anwendung erstellt und lokal getestet.

Erstellen eines Java SE 8-Basisprojekts

  1. Öffnen Sie einen Webbrowser, und navigieren Sie zur Website MicroProfile Starter.

    Screenshot, der MicroProfile Starter mit ausgewählter Runtime von Quarkus zeigt.

  2. Geben Sie die folgenden Werte für die angegebenen Felder an.

    Feld Wert
    groupId com.microsoft.azure.samples.quarkus
    artifactId quarkus-hello-azure
    „MicroProfile Version“ (MicroProfile-Version) MP 3.2
    „Java SE Version“ (Java SE-Version) Java 8
    „MicroProfile Runtime“ (MicroProfile-Runtime) Quarkus
    „Examples for Specifications“ (Beispiele für Spezifikationen) Metriken, OpenAPI
  3. Wählen Sie "HERUNTERLADEN " aus, um das Projekt herunterzuladen.

  4. Entzippen Sie die Archivdatei. Beispiel:

    unzip Quarkus-hello-azure.zip
    

Erstellen eines Java SE 11-Basisprojekts

Verwenden Sie den folgenden Befehl, um das Java 11-Basisprojekt zu erstellen:

mvn io.quarkus:quarkus-maven-plugin:2.6.1.Final:create \
  -DprojectGroupId=com.microsoft.azure.samples.quarkus \
  -DprojectArtifactId=quarkus-hello-azure  \
  -DclassName="com.microsoft.azure.samples.quarkus.App" \
  -Dpath="/hello"

Ausführen der Anwendung in der lokalen Umgebung

  1. Wechseln Sie in das Verzeichnis mit dem abgeschlossenen Projekt. Beispiel:

    cd quarkus-hello-azure/
    
  2. Erstellen Sie das Projekt mithilfe von Maven, und führen Sie es aus. Beispiel:

    mvn quarkus:dev
    
  3. Testen Sie die Webanwendung, indem Sie sie lokal in einem Webbrowser aufrufen. Sie können beispielsweise den folgenden Befehl verwenden, wenn curl verfügbar ist:

    Java SE 8-Projekt:

    curl http://localhost:8080/data/hello
    

    Java SE 11-Projekt:

    curl localhost:8080/hello
    
  4. Die folgende Meldung sollte angezeigt werden: Hallo Welt oder Hallo

Konfigurieren des Maven-Plug-Ins für Azure App Service

In diesem Abschnitt wird die Datei pom.xml des Quarkus-Projekts so konfiguriert, dass Maven die App in Azure App Service für Linux bereitstellen kann.

  1. Öffnen Sie die Datei pom.xml in einem Code-Editor.

  2. Fügen Sie in der Datei pom.xml im Abschnitt <build> innerhalb des Tags <plugins> nach maven-surefire-plugin den folgenden <plugin>-Eintrag hinzu:

    <plugin>
      <groupId>com.microsoft.azure</groupId>
      <artifactId>azure-webapp-maven-plugin</artifactId>
      <version>2.5.0</version>
    </plugin>
    
  3. Führen Sie zum Konfigurieren der Bereitstellung den folgenden Maven-Befehl aus:

    mvn azure-webapp:config
    

    Wählen Sie nach der entsprechenden Aufforderung die folgenden Optionen aus:

    Eingabefeld Einzugebender/Auszuwählender Wert
    Wählen Sie ein Abonnement. Geben Sie Ihre Abonnement-ID ein.
    Define value for OS(Default: Linux): 2. Linux
    Define value for javaVersion(Default: Java 8): 2. Java 11
    Wert für pricingTier definieren(Standard: P1v2): 9. P1v2
    Confirm (Y/N) (Bestätigen (Ja/Nein)) j

    Dieser Befehl erzeugt eine Ausgabe ähnlich wie im folgenden Beispiel:

    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------< com.microsoft.azure.samples.quarkus:quarkus-hello-azure >-------
    [INFO] Building quarkus-hello-azure 1.0-SNAPSHOT
    [INFO] --------------------------------[ jar ]---------------------------------
    [INFO]
    [INFO] --- azure-webapp-maven-plugin:2.5.0:config (default-cli) @ quarkus-hello-azure ---
    [INFO] Auth type: OAUTH2
    Username: abc@xyz.com
    Available subscriptions:
    *  1: Subscription1(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx)
       2: Subscription2(yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyy)
    Please choose a subscription [xxx]: 1
    [INFO] Subscription: Subscription1(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx)
    Define value for OS [Linux]:
      1: Windows
    * 2: Linux
      3: Docker
    Enter your choice: 2
    Define value for javaVersion [Java 8]:
    * 1: Java 8
      2: Java 11
      3: Java 17
    Enter your choice: 2
    Define value for pricingTier [P1v2]:
       1: B1
       2: B2
       3: B3
       4: D1
       5: EP1
       6: EP2
       7: EP3
       8: F1
    *  9: P1v2
      10: P1v3
      11: P2v2
      12: P2v3
      13: P3v2
      14: P3v3
      15: S1
      16: S2
      17: S3
      18: Y1
    Enter your choice: 9
    Please confirm webapp properties
    Subscription Id : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
    AppName : quarkus-hello-azure-1601011883156
    ResourceGroup : quarkus-hello-azure-1601011883156-rg
    Region : centralus
    PricingTier : P1v2
    OS : Linux
    Java : Java 11
    Web server stack: Java SE
    Deploy to slot : false
    Confirm (Y/N) [Y]:
    [INFO] Saving configuration to pom.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  16.502 s
    [INFO] Finished at: 2020-09-25T14:31:34+09:00
    [INFO] ------------------------------------------------------------------------
    
  4. Fügen Sie den <appSettings> Abschnitt zum <configuration> Abschnitt von PORT, WEBSITES_PORT, und WEBSITES_CONTAINER_START_TIME_LIMIT. Ihr XML-Eintrag azure-webapp-maven-plugin sieht ähnlich wie im folgenden Beispiel aus:

       <plugin>
         <groupId>com.microsoft.azure</groupId>
         <artifactId>azure-webapp-maven-plugin</artifactId>
         <version>2.5.0</version>
         <configuration>
           <schemaVersion>V2</schemaVersion>
           <resourceGroup>microprofile</resourceGroup>
           <appName>quarkus-hello-azure-1591836715762</appName>
           <pricingTier>P1v2</pricingTier>
           <region>centralus</region>
           <runtime>
             <os>linux</os>
             <javaVersion>java 11</javaVersion>
             <webContainer>java SE</webContainer>
           </runtime>
           <appSettings>
             <property>
               <name>PORT</name>
               <value>8080</value>
             </property>
             <property>
               <name>WEBSITES_PORT</name>
               <value>8080</value>
             </property>
             <property>
               <name>WEBSITES_CONTAINER_START_TIME_LIMIT</name>
               <value>600</value>
             </property>
           </appSettings>
           <deployment>
             <resources>
               <resource>
                 <directory>${project.basedir}/target</directory>
                 <includes>
                   <include>*.jar</include>
                 </includes>
               </resource>
             </resources>
           </deployment>
         </configuration>
       </plugin>
    
  5. Fügen Sie der Datei src/main/resources/application.properties den folgenden Eintrag hinzu, um die Uber-JAR-Datei (FAT) zu erstellen.

    quarkus.package.type=uber-jar
    

Bereitstellen der Anwendung in Azure

Nachdem Sie alle Einstellungen aus den vorherigen Abschnitten dieses Artikels konfiguriert haben, können Sie Ihre Webanwendung in Azure bereitstellen. Führen Sie dazu die folgenden Schritte aus:

  1. Erstellen Sie die JAR-Datei mit dem folgenden Befehl neu, falls Sie Änderungen an der Datei pom.xml vorgenommen haben:

    mvn clean package
    
  2. Stellen Sie Ihre Web-App mit dem folgenden Befehl in Azure bereit:

    mvn azure-webapp:deploy
    

Wenn die Bereitstellung erfolgreich ist, wird die folgende Ausgabe angezeigt:

[INFO] Successfully deployed the artifact to https://quarkus-hello-azure-1591836715762.azurewebsites.net
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  02:20 min
[INFO] Finished at: 2020-06-11T10:06:51+09:00
[INFO] ------------------------------------------------------------------------

Maven stellt Ihre Webanwendung in Azure bereit. Wenn der Webanwendungs- oder Webanwendungsplan noch nicht vorhanden ist, wird er für Sie erstellt. Es kann einige Minuten dauern, bis die Webanwendung unter der URL aus der Ausgabe angezeigt wird. Navigieren Sie in einem Webbrowser zu der URL. Der folgende Bildschirm sollte angezeigt werden:

Screenshot des Webbrowsers, der die Startseite von Quarkus zeigt.

Wenn Ihre Webanwendung bereitgestellt wurde, können Sie sie über die Azure-Portal verwalten.

Ihre Webanwendung wird in der Ressourcengruppe "microprofile " aufgeführt.

Sie können auf Ihre Webanwendung zugreifen, indem Sie "Durchsuchen" auf der Seite "Übersicht" für Ihre Web-App auswählen. Vergewissern Sie sich, dass die Bereitstellung erfolgreich war und ausgeführt wird.

Bestätigen des Protokolldatenstroms aus dem ausgeführten App-Dienst

Sie können die Protokolle der ausgeführten App Service-Instanz anzeigen (mithilfe von „tail“). Alle Aufrufe von console.log im Websitecode werden im Terminal angezeigt.

az webapp log tail 
    --resource-group microprofile \
    --name quarkus-hello-azure-1601011883156

Screenshot des Terminalfensters mit Protokolldatenstrom.

Bereinigen von Ressourcen

Wenn Sie die Azure-Ressourcen nicht mehr benötigen, löschen Sie die Ressourcengruppe, um die bereitgestellten Ressourcen zu bereinigen.

  • Wählen Sie im Azure-Portal im linken Menü die Option Ressourcengruppe aus.
  • Geben Sie microprofile in das Feld Nach Name filtern ein. (Die in diesem Tutorial erstellte Ressourcengruppe sollte dieses Präfix haben.)
  • Wählen Sie die Ressourcengruppe aus, die in diesem Tutorial erstellt wurde.
  • Wählen Sie Ressourcengruppe löschen aus dem Menü ganz oben aus.

Nächste Schritte

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

Zusätzliche Ressourcen

Weitere Informationen zu den verschiedenen in diesem Artikel besprochenen Technologien finden Sie in den folgenden Artikeln: