Статьи

OpenShift DIY: создание приложения Spring Boot / Undertow с Gradle

ботинок Из-за этой ошибки 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 вы должны увидеть новую:

Os-приложение

Под капотом

Почему сделай сам?

Приложение 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 &

использованная литература