Из-за этой ошибки Gradle 1.6 была последней поддерживаемой версией Gradle, запущенной в OpenShift. Но с Gradle 2.2 это больше не проблема, поэтому запуск новейшего Gradle на OpenShift больше не должен быть проблемой с картриджем Do It Yourself. DIY картридж — это экспериментальный картридж, который позволяет тестировать неподдерживаемые языки в OpenShift. Он предоставляет минимальные леса свободной формы, которые оставляют все детали картриджа разработчику приложения.
Этот блог рассказывает об использовании Spring Boot 1.2 и Java 8, работающих на Undertow, который поддерживается как легкая альтернатива Tomcat. Это не должно занять более 10 минут, чтобы начать работу.
необходимое условие
Прежде чем мы сможем приступить к созданию приложения, нам необходимо установить бесплатную учетную запись OpenShift и клиентские инструменты.
Шаг 1: Создайте приложение DIY
Чтобы создать приложение с помощью клиентских инструментов, введите следующую команду:
1
|
rhc app create <app-name> diy- 0.1 |
Эта команда создает приложение с использованием DIY- картриджа и клонирует репозиторий в каталог.
Шаг 2: Удалить исходный код приложения шаблона
OpenShift создает шаблон проекта, который можно свободно удалить:
1
|
git rm -rf .openshift README.md diy misc |
Зафиксируйте изменения:
1
|
git commit -am "Removed template application source code" |
Шаг 3: Извлечение исходного кода из GitHub
1
2
|
git remote add upstream https: //github.com/kolorobot/openshift-diy-spring-boot-gradle.git git pull -s recursive -X theirs upstream master |
Шаг 4: Нажмите изменения
Базовый шаблон готов к отправке в OpenShift:
1
|
git push |
Первоначальное развертывание (сборка и запуск приложения) займет некоторое время (до нескольких минут). Последующее развертывание происходит немного быстрее:
1
2
3
4
5
|
remote: BUILD SUCCESSFUL remote: Starting DIY cartridge remote: XNIO NIO Implementation Version 3.3 . 0 .Final remote: b.c.e.u.UndertowEmbeddedServletContainer : Undertow started on port(s) 8080 (http) remote: Started DemoApplication in 15.156 seconds (JVM running for 17.209 ) |
Теперь вы можете перейти по http://<app-name>.rhcloud.com/manage/health
: http://<app-name>.rhcloud.com/manage/health
и вы должны увидеть:
1
2
3
|
{ "status" : "UP" , } |
Когда вы войдете в свою учетную запись OpenShift и перейдете в Applications
вы должны увидеть новую:
Под капотом
Почему сделай сам?
Приложение Spring Boot можно развернуть на картридж Tomcat в OpenShift. Но на данный момент поддержки Undertow и Java 8 не существует, поэтому был выбран DIY. Сделай сам имеет ограничения: его нельзя масштабировать, например. Но он идеально подходит для попыток играть с новыми вещами.
Структура приложения
Приложение является обычным приложением Spring Boot, которое можно загрузить с помощью http://start.spring.io . Используемая система сборки Gradle, тип упаковки Jar.
Начиная с Spring Boot 1.2 поддерживается легкий и производительный контейнер Servlet 3.1. Чтобы использовать Undertow вместо Tomcat, необходимо обменять зависимости Tomcat с зависимостями Undertow:
1
2
3
4
5
6
7
8
9
|
buildscript { configurations { compile.exclude module: "spring-boot-starter-tomcat" } } dependencies { compile( "org.springframework.boot:spring-boot-starter-undertow" ) } |
Конкретная конфигурация OpenShift — application-openshift.properties
— содержит конфигурацию регистрации в данный момент:
1
|
logging.file=${OPENSHIFT_DATA_DIR}/logs/app.log |
OpenShift action_hooks
OpenShift выполняет файлы сценариев хуков действия в определенных точках в процессе развертывания. Все хуки размещаются в каталоге .openshift / action_hooks в хранилище приложений. Файлы должны быть исполняемыми. В Windows в Git Bash можно использовать следующую команду:
1
|
git update-index --chmod=+x .openshift/action_hooks/* |
Развертывание приложения
Сценарий развертывания загружает Java 8 и Gradle 2.2, создает несколько каталогов. Загрузка Gradle производится следующим образом:
1
2
3
4
5
6
7
|
if [ ! -d $OPENSHIFT_DATA_DIR/gradle- 2.2 . 1 ] then cd $OPENSHIFT_DATA_DIR wget https: //services.gradle.org/distributions/gradle-2.2.1-bin.zip unzip gradle- 2.2 . 1 -bin.zip rm -f gradle- 2.2 . 1 -bin.zip fi |
После запуска скрипта в $OPENSHIFT_DATA_DIR
будут созданы следующие $OPENSHIFT_DATA_DIR
:
1
|
gradle gradle- 2.2 . 1 jdk1. 8 .0_20 logs |
Кроме того, скрипт экспортирует пару переменных среды, необходимых для правильного запуска Java 8 / Gradle build. GRADLE_USER_HOME
является наиболее важным, поскольку он задает домашний каталог, в котором будут храниться все файлы среды выполнения Gradle, включая загруженные зависимости, используемые для создания приложения.
Последняя команда сценария deploy
заключается в запуске задачи Gradle для создания архива jar, который может быть выполнен из командной строки с помощью java -jar
commnad (см. Следующий абзац):
1
|
gradle bootRepackage |
Запуск приложения
Когда сценарий deploy
завершается успешно, каталог build
будет содержать один jar с собранным приложением Spring Boot. Приложение запускается и привязывается к адресу и порту сервера, предоставленным OpenShift. Кроме того, предоставляется имя профиля, поэтому можно загрузить файл дополнительных свойств. Последняя команда, которая запускает приложение, выглядит следующим образом:
1
|
nohup java -Xms384m -Xmx412m -jar build/*.jar --server.port=${OPENSHIFT_DIY_PORT} --server.address=${OPENSHIFT_DIY_IP} --spring.profiles.active=openshift & |
использованная литература
- Исходный код проекта, используемый в этой статье, можно найти
на GitHub: https://github.com/kolorobot/openshift-diy-spring-boot-sample - Документация по Spring Boot: http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#cloud-deployment-openshift
- Некоторые ссылки OpenShift, использованные при создании этой статьи:
Ссылка: | OpenShift DIY: создание Spring Boot / Undertow приложения с Gradle от нашего партнера JCG Рафаля Боровца в блоге Codeleak.pl . |