Развертывание приложения Spring Boot в Службе приложений Azure в Linux

Из этого руководства вы узнаете, как с помощью Docker включить приложение Spring Boot в контейнер и развернуть образ Docker в узле Linux в Службе приложений Azure.

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

Для работы с этим руководством требуется следующее.

Примечание.

С учетом требований виртуализации для этого руководства изложенные здесь инструкции нельзя выполнять на виртуальной машине. Необходимо использовать физический компьютер с включенными функциями виртуализации.

Создание веб-приложения Spring Boot в Docker

Ниже приведены пошаговые инструкции по созданию простого веб-приложения Spring Boot и его локальному тестированию.

  1. Откройте командную строку и создайте локальный каталог для размещения приложения, после чего перейдите в этот каталог, например:

    mkdir SpringBoot
    cd SpringBoot
    
  2. Клонируйте образец проекта Spring Boot on Docker Getting Started (Запуск Spring Boot в Docker) в созданный каталог, например:

    git clone https://github.com/spring-guides/gs-spring-boot-docker.git
    
  3. Перейдите в каталог готового проекта, например:

    cd gs-spring-boot-docker/complete
    
  4. Выполните сборку файла JAR с помощью Maven, например:

    mvn package
    
  5. После создания веб-приложения перейдите в каталог target, где находится JAR-файл, и запустите веб-приложение, например:

    cd target
    java -jar spring-boot-docker-complete-0.0.1-SNAPSHOT.jar --server.port=80
    
  6. Проверьте веб-приложение, перейдя к нему локально с помощью веб-браузера. Например, если у вас установлен CuRL и сервер Tomcat настроен для работы с использованием порта 80:

    curl http://localhost
    
  7. Должно появиться следующее сообщение: Hello Docker World.

    Browse Sample App Locally

Создание реестра контейнеров Azure для использования в качестве частного реестра Docker

Ниже приведены инструкции по созданию реестра контейнеров Azure с использованием портала Azure.

Примечание.

Если вы хотите использовать Azure CLI, а не портал Azure, выполните процедуру, описанную в статье Создание частного реестра контейнеров Docker с помощью Azure CLI 2.0.

  1. Перейдите на портал Azure и выполните вход.

    После входа в свою учетную запись на портал Azure выполните действия, описанные в разделе "Создание частного реестра контейнеров Docker" с помощью статьи портал Azure, которая будет парафразирована в следующих шагах для целей удобства.

  2. Щелкните значок меню Создать, а затем выберите Контейнеры и Реестр контейнеров Azure.

    Create a new Azure Container Registry

  3. Когда откроется страница Создать реестр контейнеров, укажите имя реестра, подписку, группу ресурсов и расположение. Затем выберите Создать.

    Configure Azure Container Registry settings

  4. Выберите Ключи доступа в разделе Параметры и выберите Включено для параметра Администратор.

    Enable admin user UI in the Azure portal

Настройка Maven для создания образа в Реестре контейнеров Azure

  1. Перейдите в каталог завершенного проекта для приложения Spring Boot (например, C:\SpringBoot\gs-spring-boot-docker\complete или /users/robert/SpringBoot/gs-spring-boot-docker/complete) и откройте файл pom.xml в текстовом редакторе.

  2. Обновите коллекцию <properties> в файле pom.xml, добавив последнюю версию jib-maven-plugin, значение сервера входа и параметры доступа для Реестра контейнеров Azure из предыдущего раздела этого руководства. Например:

    <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>
    
  3. Добавьте jib-maven-plugin в коллекцию <plugins> в файле pom.xml. В этом примере используется версия 3.2.0.

    Укажите базовый образ в <from>/<image> (здесь это mcr.microsoft.com/openjdk/jdk:11-ubuntu). Укажите имя окончательного образа, который будет создан на основе базового в <to>/<image>.

    {docker.image.prefix} проверки подлинности — это значение сервера входа на странице реестра, показанной выше. {project.artifactId} — это имя и номер версии JAR-файла из первой сборки проекта Maven.

    <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>
    
  4. Перейдите в каталог завершенного проекта для приложения Spring Boot и выполните команду ниже для перестроения приложения и отправки контейнера в реестр контейнеров Azure:

    az acr login --name wingtiptoysregistry && mvn compile jib:build
    

Примечание.

  1. az acr login ... Команда попытается войти в Реестр контейнеров Azure, в противном случае необходимо предоставить <username> и <password> для jib-maven-plugin, см. методы проверки подлинности в jib.
  2. При использовании Jib для отправки образа в Реестр контейнеров Azure образ не будет использоваться Dockerfile, см. этот документ.

Создание веб-приложения в Linux в службе приложений Azure с помощью образа контейнера

  1. Перейдите на портал Azure и выполните вход.

  2. Щелкните значок меню Создать ресурс, а затем выберите Вычисления и Веб-приложение.

    Create a new web app in the Azure portal

  3. Когда отобразится страница Веб-приложение в Linux, введите следующие сведения.

    • В раскрывающемся списке выберите свою подписку.

    • Выберите существующую группу ресурсов или укажите имя, чтобы создать новую группу ресурсов.

    • Введите уникальное имя в поле Имя приложения, например wingtiptoyslinux.

    • Укажите Docker Container для публикации.

    • В поле Операционная система выберите Linux.

    • Выберите Регион.

    • Примите план Linux и выберите существующий план службы приложений или щелкните Создать, чтобы создать новый.

    • Нажмите кнопку " Далее": Docker.

    Click the Next: Docker button to proceed.

    На странице Веб-приложение выберите Docker и введите следующие сведения:

    • Выберите Один контейнер.

    • Реестр: выберите контейнер, например wingtiptoysregistry

    • Образ. Выберите созданный ранее образ, например spring-boot-docker.

    • Тег: выберите тег для изображения, например "последняя версия"

    • Команда запуска: оставьте его пустым, так как образ уже имеет команду запуска

    После ввода всех приведенных выше сведений нажмите кнопку "Просмотр и создание".

    Finish by selecting Review + Create.

    • Выберите Review + create (Просмотреть и создать).

Просмотрите сведения и щелкните Создать.

После завершения развертывания выберите Перейти к ресурсу. На странице развертывания отобразится URL-адрес для доступа к приложению.

Get URL of deployment

Примечание.

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

  1. Перейдите на портал Azure и выполните вход.

  2. Щелкните значок Веб-приложения и выберите нужное приложение на странице Службы приложений.

  3. В области навигации слева щелкните Конфигурация.

  4. В разделе Параметры приложения добавьте новый параметр с именем WEBSITES_PORT и введите номер пользовательского порта в качестве значения.

  5. Нажмите ОК. Затем выберите Сохранить.

Saving a custom port number in the Azure portal

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

Если они больше не нужны, используйте портал Azure, чтобы удалить ресурсы, созданные в этой статье во избежание непредвиденных расходов.

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

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

См. также

Дополнительные сведения об использовании приложений Spring Boot в Azure см. в следующих статьях:

Дополнительные сведения об использовании Java в Azure см. в статьях Azure для разработчиков Java и Working with Azure DevOps and Java (Работа с Azure DevOps и Java).

Дополнительные сведения о Spring Boot в образце проекта Docker см. в разделе Spring Boot on Docker Getting Started (Начало работы с Spring Boot в Docker).

Справку по началу работы с собственными приложениями Spring Boot см. на странице Spring Initializr: https://start.spring.io/.

Дополнительные сведения о создании простого приложения Spring Boot см. на странице Spring Initializr: https://start.spring.io/.

Дополнительные примеры использования пользовательских образов Docker в Azure см. в разделе Применение пользовательского образа Docker для веб-приложения Azure на платформе Linux.