Поделиться через


Развертывание веб-приложения Quarkus в Службе приложений Azure с помощью Maven

В этом кратком руководстве показано, как использовать подключаемый модуль Maven для веб-приложений Службы приложений Azure, чтобы развернуть приложение Quarkus в Службе приложений Azure в Linux. Развертывание Java SE является предпочтительным по сравнению с Tomcat и файлами WAR, если вам нужно объединить зависимости, среду выполнения и файлы конфигурации приложения в единый развертываемый артефакт.

Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.

Необходимые компоненты

Вход в Azure CLI

Azure CLI — самый простой и наиболее удобный способ развернуть приложение Quarkus с помощью подключаемого модуля Maven.

Войдите в учетную запись Azure с помощью интерфейса командной строки Azure.

az login

Для завершения процесса входа следуйте инструкциям.

Создание примера приложения в MicroProfile Starter

В этом разделе вы создадите приложение Quarkus и протестируете его локально.

Создание базового проекта Java SE 8

  1. Откройте веб-браузер и перейдите на сайт MicroProfile Starter.

    Снимок экрана: Начальная версия MicroProfile с выбранной средой выполнения Quarkus.

  2. Введите следующие значения для указанных здесь полей.

    Поле значение
    groupId com.microsoft.azure.samples.quarkus
    artifactId quarkus-hello-azure
    MicroProfile Version (Версия MicroProfile) MP 3.2
    Java SE Version (Версия Java SE) Java 8
    MicroProfile Runtime (Среда выполнения MicroProfile) Quarkus
    Examples for Specifications (Примеры для требований) Метрики, OpenAPI
  3. Выберите "Скачать", чтобы скачать проект.

  4. Распакуйте файл архива, например:

    unzip Quarkus-hello-azure.zip
    

Создание базового проекта Java SE 11

Чтобы создать базовый проект Java 11, выполните следующую команду:

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"

Запуск приложения в локальной среде

  1. Перейдите в каталог готового проекта, например:

    cd quarkus-hello-azure/
    
  2. Создайте и запустите проект с помощью Maven; например:

    mvn quarkus:dev
    
  3. Проверьте веб-приложение, перейдя к нему локально с помощью веб-браузера. Например, если имеется Curl, можно использовать следующую команду:

    Для проекта Java SE 8:

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

    Для проекта Java SE 11:

    curl localhost:8080/hello
    
  4. Появится следующее сообщение: Hello World или hello

Настройка подключаемого модуля Maven для Службы приложений Azure

В рамках этого раздела вы настроите файл pom.xml проекта Quarkus, чтобы развернуть приложение в Службе приложений Azure на платформе Linux с помощью Maven.

  1. Откройте файл pom.xml в текстовом редакторе.

  2. В разделе <build> файла pom.xml добавьте следующую запись <plugin> внутри тега <plugins> после maven-surefire-plugin.

    <plugin>
      <groupId>com.microsoft.azure</groupId>
      <artifactId>azure-webapp-maven-plugin</artifactId>
      <version>2.5.0</version>
    </plugin>
    
  3. Чтобы настроить это развертывание, выполните следующую команду Maven:

    mvn azure-webapp:config
    

    Выберите следующие параметры, когда появится соответствующий запрос:

    Поле ввода Введите или выберите значение
    Выберите подписку Введите идентификатор подписки.
    Определите значение для OS(Default: Linux): 2. Linux
    Определите значение javaVersion(Default: Java 8): 2. Java 11
    Определите значение для ценообразования (по умолчанию: P1v2): 9. P1v2
    Подтверждение (Y/N) г

    Выходные данные этой команды выглядят примерно так:

    [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. Добавьте раздел в <appSettings> <configuration> раздел PORT, WEBSITES_PORTа также WEBSITES_CONTAINER_START_TIME_LIMIT. Xml-запись будет azure-webapp-maven-plugin выглядеть примерно так:

       <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. Добавьте следующую запись в файл src/main/resources/application.properties, чтобы создать Uber (FAT) JAR.

    quarkus.package.type=uber-jar
    

Развертывание приложения в Azure

Завершив настройку всех параметров, описанную в предыдущих разделах этой статьи, можно приступать к развертыванию веб-приложения в Azure. Для этого выполните следующие действия.

  1. Если вы вносили изменения в файл pom.xml, заново скомпилируйте файл JAR с помощью следующей команды:

    mvn clean package
    
  2. Разверните веб-приложение в Azure, используя следующую команду:

    mvn azure-webapp:deploy
    

Если развертывание выполнено успешно, вы увидите следующие выходные данные:

[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 выполнит развертывание веб-приложения в Azure. Если план веб-приложения или веб-приложения еще не существует, он будет создан для вас. Отображение веб-приложения по URL-адресу, указанному в выходных данных, может занять несколько минут. Перейдите по этому URL-адресу в веб-браузере. Вы должны увидеть приведенный ниже экран.

Снимок экрана: веб-браузер с первой страницей Quarkus.

При развертывании веб-приложения его можно управлять с помощью портал Azure.

Веб-приложение будет указано в группе ресурсов microprofile .

Вы можете получить доступ к веб-приложению, выбрав "Обзор " на странице обзора веб-приложения. Убедитесь, что развертывание было успешным и запущено.

Подтвердите поток журнала из запущенного Служба приложений

Вы можете просмотреть журналы (или выполнить вывод последнего фрагмента) из запущенной Службы приложений. Все вызовы console.log в коде сайта отображаются в окне терминала.

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

Снимок экрана: окно терминала с потоком журналов.

Очистка ресурсов

Если ресурсы Azure больше не нужны, их можно удалить. Для этого необходимо удалить группу ресурсов.

  • На портале Azure в меню слева выберите "Группа ресурсов".
  • Введите microprofile в поле Фильтровать по имени. Группа ресурсов, созданная при работе с этим учебником, должна иметь этот префикс.
  • Выберите группу ресурсов, созданную при работе с этим руководством.
  • В меню сверху выберите "Удалить группу ресурсов".

Следующие шаги

Дополнительные сведения о MicroProfile и Azure см. в центре документации об использовании MicroProfile в Azure.

Дополнительные ресурсы

Дополнительные сведения о различных технологиях, рассматриваемых в данной статье, см. в следующих статьях.