Развертывание приложения Spring Boot в Linux в Службе приложений Azure
В этом руководстве описывается использование Docker для контейнеризации приложения Spring Boot и развертывания собственного образа Docker на узле Linux в службе приложений Azure.
Необходимые условия
Чтобы выполнить действия, описанные в этом руководстве, необходимо иметь следующие предварительные требования:
- Подписка Azure; если у вас еще нет подписки Azure, вы можете активировать преимущества подписчика MSDN или зарегистрироваться для получения бесплатной учетной записи Azure.
- интерфейса командной строки Azure Command-Line
. - Поддерживаемый пакет средств разработки Java (JDK). Дополнительные сведения об JDK, доступных для разработки в Azure, см. в поддержке Java в Azure и Azure Stack.
- инструмент сборки Apache Maven (версия 3).
- Клиент Git .
- Клиент Docker.
Заметка
Из-за требований к виртуализации этого руководства вы не можете выполнить действия, описанные в этой статье, на виртуальной машине; Необходимо использовать физический компьютер с включенными функциями виртуализации.
Создание веб-приложения Spring Boot на Docker: руководство для начинающих
В следующих шагах описаны шаги, необходимые для создания простого веб-приложения Spring Boot и тестирования его локально.
Откройте командную строку и создайте локальный каталог для хранения приложения и перейдите в этот каталог; Например:
mkdir SpringBoot cd SpringBoot
Клонируйте пример проекта Spring Boot в Docker Getting Started в созданный каталог; Например:
git clone https://github.com/spring-guides/gs-spring-boot-docker.git
Перейдите в каталог завершенного проекта; например:
cd gs-spring-boot-docker/complete
Создание JAR-файла с помощью Maven; Например:
mvn package
После создания веб-приложения измените каталог на каталог
target
, в котором находится JAR-файл, и запустите веб-приложение; Например:cd target java -jar spring-boot-docker-complete-0.0.1-SNAPSHOT.jar --server.port=80
Протестируйте веб-приложение, перейдя к нему локально с помощью веб-браузера. Например, если у вас есть curl, и вы настроили сервер Tomcat для запуска через порт 80:
curl http://localhost
Появится следующее сообщение: Hello Docker World
Создание реестра контейнеров Azure для использования в качестве частного реестра Docker
Следующие шаги помогут вам использовать портал Azure для создания реестра контейнеров Azure.
Заметка
Если вы хотите использовать Azure CLI вместо портала Azure, выполните действия, описанные в создании частного реестра контейнеров Docker с помощью azure CLI 2.0.
Перейдите к порталу Azure и войдите.
После входа в учетную запись на портале Azure выполните действия, описанные в разделе Создание частного реестра контейнеров Docker с помощью статьи портала Azure, которые парафразируются в следующих шагах для повышения удобства.
Щелкните значок меню Создать, выберите Контейнеры, а затем выберите реестр контейнеров Azure.
При отображении страницы создания реестра контейнеров , введите имя реестра, подписка, группа ресурсови расположение. Затем выберите Создать.
Выберите ключи доступа в разделе "Параметры" и включите переключатель "Включено" рядом с пользователем-администратором .
Настройка Maven для создания образа в реестре контейнеров Azure
Перейдите к завершенной папке проекта для приложения Spring Boot, например C:\SpringBoot\gs-spring-boot-docker\complete или /users/robert/SpringBoot/gs-spring-boot-docker/complete - и откройте файл pom.xml с текстовым редактором.
Обновите коллекцию
<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>
Добавьте 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>
Перейдите в полный каталог проекта для приложения Spring Boot и выполните следующую команду, чтобы перестроить приложение и отправить контейнер в реестр контейнеров Azure:
az acr login --name wingtiptoysregistry && mvn compile jib:build
Заметка
- Команда
az acr login ...
попытается выполнить вход в реестр контейнеров Azure, иначе необходимо предоставить<username>
и<password>
для подключаемого модуля jib-maven-plugin, см. Способы аутентификации в jib. - При использовании Jib для отправки образа в реестр контейнеров Azure образ не будет использоваться Dockerfile. Дополнительные сведения см. в этом документе.
Создание веб-приложения в Linux в Службе приложений Azure с помощью образа контейнера
Перейдите к порталу Azure и войдите.
Щелкните значок меню Создание ресурса, выберите Компьютеры, а затем выберите Веб-приложение.
Когда отображается веб-приложение на странице Linux, введите следующие сведения:
Выберите вашу подписку из раскрывающегося списка.
Выберите существующую группу ресурсовили укажите имя для создания новой группы ресурсов.
Введите уникальное имя приложения; например: wingtiptoyslinux
Укажите от
Docker Container
до для публикации.В поле операционной системы
выберите Linux .Выберите региона.
Примите план Linux и выберите существующий план службы приложений или выберите Создать новый, чтобы создать новый план службы приложений.
Нажмите кнопку Далее: Docker.
На странице веб-приложения выберите Dockerи введите следующую информацию:
Выберите отдельный контейнер.
Реестр: выберите контейнер, например: wingtiptoysregistry.
образ: выберите созданный ранее образ, например spring-boot-docker.
тег: выберите тег для изображения, например последний.
команда запуска : оставить ее пустой, так как образ уже имеет команду запуска
После ввода всей вышеуказанной информации выберите Просмотр и создание.
- Выберите Проверка, а затем создание.
Просмотрите информацию и выберите Создать.
После завершения развертывания выберите Перейти к ресурсу. На странице развертывания отображается URL-адрес для доступа к приложению.
Заметка
Azure автоматически сопоставляет интернет-запросы с внедренным сервером Tomcat, работающим на порту — 80. Однако если вы настроили внедренный сервер Tomcat для запуска через порт — 8080 или пользовательский порт, необходимо добавить переменную среды в веб-приложение, определяющее порт для встроенного сервера Tomcat. Для этого выполните следующие действия.
Перейдите к порталу Azure и войдите.
Выберите значок веб-аппликацийи выберите ваше приложение на странице служб приложений.
Выберите Конфигурация в левой навигационной области.
В разделе параметров приложения
добавьте новый параметр с именем WEBSITES_PORT и введите номер пользовательского порта для значения.Нажмите кнопку ОК. Затем выберите Сохранить.
Очистка ресурсов
При отсутствии необходимости используйте портал Azure для удаления ресурсов, созданных в этой статье, чтобы избежать непредвиденных расходов.
Дальнейшие действия
Чтобы узнать больше о Spring и Azure, перейдите в центр документации Spring в Azure.
См. также
Дополнительные сведения об использовании приложений Spring Boot в Azure см. в следующих статьях:
Дополнительные сведения об использовании Azure с Java см. в Azure для разработчиков Java и в Работа с Azure DevOps и Java.
Дополнительные сведения о примере проекта Spring Boot в Docker см. в разделе Spring Boot в Docker Getting Started.
См.
Дополнительные сведения о начале работы с созданием простого приложения Spring Boot см. в разделе Spring Initializr на https://start.spring.io/.
Дополнительные примеры использования пользовательских образов Docker с Azure см. в статье Использование пользовательского образа Docker для веб-приложения Azure в Linux.