Как развернуть Ratpack API на удаленном сервере?

Я создал API, используя Ratpack и Groovy. Все приложения GET, POST работают локально. Теперь я хочу, чтобы это переместилось на какой-то удаленный сервер (скажем, в среду разработки). Как я могу это сделать? Чтобы запустить и запустить приложение локально, мне нужно выполнить либо «запуск gradle», либо «запустить Ratpack.groovy как скрипт groovy» из eclipse IDE. Затем он говорит: «Сервер Ratpack работает на локальном хосте: 8080». И тогда я могу использовать API-интерфейсы как localhost: 8080/api/.../.../... но в то же время, когда я пытаюсь запустить его как приложение JAVA, я получаю сообщение об ошибке:

{"@timestamp":"2016-06-02T14:47:06.026+05:30","@version":1,"message":"Starting server...","logger_name":"ratpack.server.RatpackServer","thread_name":"main","level":"INFO","level_value":20000,"tags":null}
Exception in thread "main" java.io.UncheckedIOException: java.io.IOException: Is a directory
    at ratpack.util.Exceptions.uncheck(Exceptions.java:52)
    at ratpack.groovy.Groovy.ratpack(Groovy.java:112)
    at ratpack.groovy.Groovy$ratpack.callStatic(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:56)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:194)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:206)
    at Ratpack.run(Ratpack.groovy:22)

Чтобы развернуть его в проде, я переместил банку на сервер. Что после этого нужно сделать, чтобы запустить сервер Ratpack или, точнее, службу API?


person tanmayghosh2507    schedule 06.06.2016    source источник


Ответы (1)


Я бы рекомендовал настроить конвейер CI, который создает java jar и развертывает артефакт в вашей целевой среде.

Я рекомендую использовать Shadow Plugin от John Engleman https://plugins.gradle.org/plugin/com.github.johnrengelman.shadow

Этот подключаемый модуль создает теневую банку (похожую на затененную банку Maven), которая может дополнительно включать сценарии bash или пакетные сценарии для запуска вашего приложения.

Предложение высокого уровня:

  1. Добавьте теневой плагин в файл сборки Gradle.

    plugins { id 'io.ratpack.ratpack-groovy' версия '1.3.3' id 'com.github.johnrengelman.shadow' версия '1.2.3' }

  2. Имейте свой сервер CI или вручную выполните `gradlew installShadowApp

  3. SCP/FTP этот артефакт из вашего каталога build/installShadow на ваш целевой сервер

  4. Вызовите сценарий оболочки из build/installShadow/$appName/bin/$appName для запуска приложения.

Для более удобного решения я бы рекомендовал зарегистрировать этот сценарий оболочки как службу или с помощью решения, такого как monit/upstart/etc.

Более подробный пример развертывания на Heroku можно найти в моих заметках: http://danhyun.github.io/2016-gr8confeu-rapid-ratpack-groovy/#deploying_to_heroku

person Dan Hyun    schedule 06.06.2016