Déployer une application web Quarkus sur Azure App Service avec Maven

Dans ce guide de démarrage rapide, vous allez utiliser le plug-in Maven pour Azure App Service Web Apps afin de déployer une application Quarkus dans Azure App Service sur Linux. Il est préférable de choisir un déploiement Java SE plutôt que des fichiers Tomcat et WAR si vous souhaitez consolider les dépendances, le runtime et la configuration de votre application en un seul artefact déployable.

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

Prérequis

Connectez-vous à Azure CLI

La façon la plus simple et la plus rapide pour que le plug-in Maven déploie votre application Quarkus est d’utiliser Azure CLI.

Connectez-vous à votre compte Azure à l’aide de l’interface de ligne de commande Azure :

az login

Suivez les instructions pour terminer le processus de connexion.

Créer un exemple d’application à partir de MicroProfile Starter

Dans cette section, vous allez créer une application Quarkus et la tester localement.

Créer un projet de base Java SE 8

  1. Ouvrez un navigateur web et accédez au site de MicroProfile Starter.

    Capture d’écran montrant MicroProfile Starter avec le runtime De Starter Avec Le runtime De Basicus sélectionné.

  2. Entrez les valeurs suivantes pour les champs indiqués.

    Champ Valeur
    groupId com.microsoft.azure.samples.quarkus
    artifactId quarkus-hello-azure
    Version de MicroProfile MP 3.2
    Version Java SE Java 8
    Runtime MicroProfile.io Quarkus
    Exemples de spécifications Métriques, OpenAPI
  3. Sélectionnez TÉLÉCHARGER pour télécharger le projet.

  4. Décompressez le fichier d’archive ; par exemple :

    unzip Quarkus-hello-azure.zip
    

Créer un projet de base Java SE 11

Pour créer le projet de base Java 11, utilisez la commande suivante :

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"

Exécuter l’application dans un environnement local

  1. Accédez au répertoire du projet terminé. Par exemple :

    cd quarkus-hello-azure/
    
  2. Générez puis exécutez le projet à l’aide de Maven ; par exemple :

    mvn quarkus:dev
    
  3. Testez l’application web en y accédant localement via un navigateur web. Par exemple, vous pouvez utiliser la commande suivante si curl est disponible :

    Pour le projet Java SE 8 :

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

    Pour le projet Java SE 11 :

    curl localhost:8080/hello
    
  4. Le message suivant doit s’afficher : Hello World ou hello

Configurer le plug-in Maven pour Azure App Service

Dans cette section, vous allez configurer le fichier pom.xml du projet Quarkus pour que Maven puisse déployer l’application dans Azure App Service sur Linux.

  1. Ouvrez le fichier pom.xml dans un éditeur de code.

  2. Dans la section <build> du fichier pom.xml, ajoutez l’entrée <plugin> suivante dans la balise <plugins>, après maven-surefire-plugin.

    <plugin>
      <groupId>com.microsoft.azure</groupId>
      <artifactId>azure-webapp-maven-plugin</artifactId>
      <version>2.5.0</version>
    </plugin>
    
  3. Pour configurer le déploiement, exécutez la commande Maven suivante :

    mvn azure-webapp:config
    

    Sélectionnez les options suivantes quand vous y êtes invité :

    Champ d’entrée Entrer/Sélectionner une valeur
    Sélectionnez un abonnement Entrez votre ID d’abonnement.
    Définir la valeur du système d’exploitation (par défaut : Linux) : 2. linux
    Définir la valeur de javaVersion(Par défaut : Java 8) : 2. Java 11
    Définir la valeur de pricingTier(Par défaut : P1v2) : 9. P1v2
    Confirmez (O/N) y

    Cette commande produit une sortie semblable à celle de l’exemple suivant :

    [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. Ajoutez la <appSettings> section à la <configuration> section de PORT, WEBSITES_PORTet WEBSITES_CONTAINER_START_TIME_LIMIT. Votre entrée XML ressemble azure-webapp-maven-plugin à l’exemple suivant :

       <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. Ajoutez l’entrée suivante au fichier src/main/resources/application.properties pour créer le fichier jar Uber (FAT).

    quarkus.package.type=uber-jar
    

Déploiement de l’application dans Azure

Une fois que vous avez configuré tous les paramètres dans les sections précédentes de cet article, vous êtes prêt à déployer votre application web dans Azure. Pour cela, utilisez les étapes suivantes :

  1. Si vous avez modifié le fichier pom.xml, regénérez le fichier JAR en utilisant la commande suivante :

    mvn clean package
    
  2. Déployez votre application web sur Azure en utilisant la commande suivante :

    mvn azure-webapp:deploy
    

Si le déploiement réussit, la sortie suivante s’affiche :

[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 déploie votre application web sur Azure. Si l’application web ou le plan d’application web n’existe pas déjà, il sera créé pour vous. Plusieurs minutes peuvent être nécessaires avant que l’application web ne soit visible à l’URL indiquée dans la sortie. Accédez à l’URL dans un navigateur web. Vous devez normalement voir l’écran suivant.

Capture d’écran du navigateur web montrant la page d’accueil de Quarkus.

Une fois votre application web déployée, vous pouvez la gérer via le Portail Azure.

Votre application web est répertoriée dans le groupe de ressources microprofile .

Vous pouvez accéder à votre application web en sélectionnant Parcourir dans la page Vue d’ensemble de votre application web. Vérifiez que le déploiement a réussi et qu’il est en cours d’exécution.

Confirmer le flux de journal à partir de l’application App Service en cours d’exécution

Vous pouvez voir les dernières lignes des journaux de l’instance App Service en cours d’exécution. Tous les appels à console.log dans le code du site s’affichent dans le terminal.

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

Capture d’écran de la fenêtre de terminal montrant le flux de journal.

Nettoyer les ressources

Lorsque vous n’en avez plus besoin, nettoyez les ressources Azure que vous avez déployées en supprimant le groupe de ressources.

  • Dans le portail Azure, sélectionnez Groupe de ressources dans le menu de gauche.
  • Entrez microprofile dans le champ Filtrer par nom. Le groupe de ressources créé dans ce tutoriel doit avoir ce préfixe.
  • Sélectionnez le groupe de ressources créé dans ce tutoriel.
  • Sélectionnez Supprimer le groupe de ressources dans le menu supérieur.

Étapes suivantes

Pour en savoir plus sur MicroProfile et Azure, rendez-vous sur le centre de documentation MicroProfile sur Azure.

Ressources supplémentaires

Pour plus d’informations sur les différentes technologies présentées dans cet article, consultez les articles suivants :