Spring Boot приложение в облаке OpenShift(java-8, mongodb-3)
OpenShift - хостинг веб приложений. По умолчанию можно создать приложение с tomcat7, java7, mongodb2.4… Всё это давно устарело. Если хотим чтото поновее или то, чего вообще нет среди предложенного - пишем сами (или ищем уже готовое на гитхабе)
Можно создавать приложения и добавлять картриджи двумя способами:
- Консольная утилита rhc
- Браузер
Создание приложения на OpenShift:
В примере создается приложение с названием demo.
За основу берем репозиторий с гитхаба kolorobot/openshift-diy-spring-boot-gradle
Можно(но не обязательно) заранее создать свой репозиторий и использовать его в качестве основы. В корне должна находиться папка .openshift/action_hooks и 3 файла внутри:
- start - Запуск приложения
- stop - Остановка приложения
- deploy - Установка jdk, gradle (если не установлены) + сборка приложения
файлы deploy, start, stop должны быть исполняемыми:
Создаем приложение утилитой rhc
Создаем приложение через GUI в браузере
https://openshift.redhat.com/app/console/applications кнопка "Add Application…" ищем тип приложения по слову diy выбираем Do-It-Yourself 0.1 Public URL: указываем название приложения Source Code: https://github.com/kolorobot/openshift-diy-spring-boot-gradle.git кнопка "Create Application"
Добавление картриджа с mongodb
Картридж с mongodb так же находим на гитхабе icflorescu/openshift-cartridge-mongodb
Добавляем картридж через утилиту rhc
Добавляем картридж через браузер
Install your own cartridge http://cartreflect-claytondev.rhcloud.com/github/icflorescu/openshift-cartridge-mongodb Next
Подключение к mongodb из spring-boot
Добавляем зависимость в build.gradle
Создадим файл src/main/resources/application-openshift.properties
,
запишем в него следующую строку, где demo
- название базы.
spring.data.mongodb.uri=${MONGODB_URL}demo
Логи
Чтобы указать директорию, куда мы хотим писать логи приложения,
нужно отредактировать файл .openshift/action_hooks/start
В запуск jar допишем параметр --logging.file=${OPENSHIFT_LOG_DIR}app.log
Как деплоить
Не смотря на то, что в OpenShift есть git репозиторий, совсем не обязательно использовать его как основной.
Я выбрал такую стратегию: Создал репозиторий на bitbucket и там держу исходники. А когда надо задеплоить - делаю push на OpenShift.
Как это сделать, подробно описано на stackoverflow
Что получилось
По url demo-username.rhcloud.com
доступно только что созданное приложение.
Установлены
- jdk1.8.0_65
- gradle-2.7
- mongodb 3.0.7
Приложение пакуется в jar и запускается обычным способом (java -jar …)