Condividi tramite


Distribuire un'app Web Quarkus nel servizio app di Azure con Maven

In questa guida introduttiva, utilizzerai il plug-in Maven per le App Web del Servizio App di Azure per distribuire un'applicazione Quarkus su Azure App Service su Linux. È consigliabile scegliere la distribuzione java SE su file Tomcat e WAR quando si vogliono consolidare le dipendenze, il runtime e la configurazione dell'app in un singolo artefatto distribuibile.

Se non hai un abbonamento Azure, crea un account gratuito prima di iniziare.

Prerequisiti

Accedere ad Azure CLI

Il modo più semplice e facile per utilizzare il plug-in Maven per distribuire l'applicazione Quarkus consiste nell'usare Azure CLI.

Accedi al tuo account Azure usando l'interfaccia della riga di comando di Azure:

az login

Seguire le istruzioni per completare il processo di accesso.

Creare un'app di esempio da MicroProfile Starter

In questa sezione si creerà un'applicazione Quarkus e la si testerà in locale.

Creare un progetto di base Java SE 8

  1. Aprire un web browser e navigare al sito MicroProfile Starter.

    Screenshot che mostra MicroProfile Starter con il runtime Quarkus selezionato.

  2. Specificare i valori seguenti per i campi indicati.

    Campo Valore
    ID del gruppo com.microsoft.azure.samples.quarkus
    artifactId quarkus-hello-azure
    Versione MicroProfile MP 3.2
    Versione di Java SE Java 8
    MicroProfile Runtime Quarkus
    Esempi di specifiche Metriche, OpenAPI
  3. Selezionare DOWNLOAD per scaricare il progetto.

  4. Decomprimere il file di archivio; Per esempio:

    unzip Quarkus-hello-azure.zip
    

Creare un progetto di base Java SE 11

Per creare il progetto di base Java 11, usare il comando seguente:

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"

Eseguire l'applicazione nell'ambiente locale

  1. Cambiare directory al progetto completato: per esempio

    cd quarkus-hello-azure/
    
  2. Compilare ed eseguire il progetto usando Maven; Per esempio:

    mvn quarkus:dev
    
  3. Testare l'applicazione web accedendovi localmente usando un browser web. Ad esempio, è possibile usare il comando seguente se è disponibile curl:

    Per il progetto Java SE 8:

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

    Per il progetto Java SE 11:

    curl http://localhost:8080/hello
    
  4. Verrà visualizzato il messaggio seguente: Hello World o hello

Configurare il plug-in Maven per il servizio app di Azure

In questa sezione si configurerà il progetto Quarkus pom.xml file in modo che Maven possa distribuire l'app nel servizio app di Azure in Linux.

  1. Aprire il file pom.xml in un editor di codice.

  2. Nella sezione <build> del file di pom.xml, inserire la seguente voce di <plugin> all'interno del tag <plugins> dopo maven-surefire-plugin.

    <plugin>
      <groupId>com.microsoft.azure</groupId>
      <artifactId>azure-webapp-maven-plugin</artifactId>
      <version>2.13.0</version>
    </plugin>
    
  3. Per configurare la distribuzione, eseguire il comando Maven seguente:

    mvn azure-webapp:config
    

    Selezionare le opzioni seguenti quando richiesto:

    Campo di input Inserisci/Seleziona valore
    Scegliere una sottoscrizione Immettere l'ID sottoscrizione.
    Definire il valore per OS (Predefinito: Linux): 2. Linux
    Definire il valore per javaVersion(Default: Java 8): 2. Java 11
    Definire il valore per pricingTier(Default: P1v2): 3. P1v2
    Conferma (Y/N) y

    Questo comando genera un output simile all'esempio seguente:

    [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.13.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: D1
      2: B3
    * 3: P1v2
      4: P1v3
      5: P2v2
      6: P2v3
      7: P3v2
      8: P3v3
      9: B1
     10: B2
     11: F1
     12: S1
     13: S2
     14: S3
     15: EP3
     16: EP2
     17: EP1
     18: Y1
     19: FC1
    Enter your choice: 3
    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. Aggiungere la sezione <appSettings> alla sezione <configuration> di PORT, WEBSITES_PORTe WEBSITES_CONTAINER_START_TIME_LIMIT. La voce XML per azure-webapp-maven-plugin sarà simile all'esempio seguente:

       <plugin>
         <groupId>com.microsoft.azure</groupId>
         <artifactId>azure-webapp-maven-plugin</artifactId>
         <version>2.13.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. Aggiungere la voce seguente al file src/main/resources/application.properties file per creare il file JAR Uber (FAT).

    quarkus.package.type=uber-jar
    

Distribuire l'app in Azure

Dopo aver configurato tutte le impostazioni nelle sezioni precedenti di questo articolo, si è pronti per distribuire l'applicazione Web in Azure. A tale scopo, seguire questa procedura:

  1. Se sono state apportate modifiche al file pom.xml, ricompilare il file JAR usando il comando seguente:

    mvn clean package
    
  2. Distribuire l'app Web in Azure usando il comando seguente:

    mvn azure-webapp:deploy
    

Se la distribuzione ha esito positivo, verrà visualizzato il risultato seguente.

[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 distribuirà l'applicazione Web in Azure. Se l'applicazione Web o il piano dell'applicazione Web non esiste già, verrà creato per te. Potrebbero essere necessari alcuni minuti prima che l'applicazione Web sia visibile all'URL visualizzato nell'output. Navigare verso l'URL in un browser web. Verrà visualizzata la schermata seguente.

Screenshot del Web browser che mostra la prima pagina di Quarkus.

Quando l'applicazione Web è stata distribuita, è possibile gestirla tramite il portale di Azure .

L'applicazione web verrà elencata nel gruppo di risorse microprofile.

È possibile accedere alla tua applicazione Web selezionando Sfoglia nella pagina Panoramica per la tua applicazione Web. Verificare che la distribuzione sia riuscita e sia in esecuzione.

Conferma il flusso di log dal servizio App Service in esecuzione

È possibile visualizzare (o esaminare in tempo reale) i log dall'App Service in esecuzione. Tutte le chiamate a console.log nel codice del sito vengono visualizzate nel terminale.

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

Screenshot della finestra del terminale che mostra il flusso di log.

Pulire le risorse

Quando le risorse di Azure non sono più necessarie, pulire le risorse distribuite eliminando il gruppo di risorse.

  • Nel portale di Azure selezionare Gruppo di risorse dal menu a sinistra.
  • Immettere microprofile nel campo Filtro per nome. Il gruppo di risorse creato in questa esercitazione dovrebbe avere questo prefisso.
  • Selezionare il gruppo di risorse creato in questa esercitazione.
  • Selezionare Elimina gruppo di risorse dal menu in alto.

Passaggi successivi

Per altre informazioni su MicroProfile e Azure, passare al Centro documentazione di MicroProfile in Azure.

Risorse aggiuntive

Per altre informazioni sulle varie tecnologie descritte in questo articolo, vedere gli articoli seguenti: