0

我使用 Ratpack 和 Groovy 创建了一个 API。所有 GET、POST 应用程序都在本地运行。现在我想让它移动到某个远程服务器(比如开发环境)。我怎样才能做到这一点?要在本地启动和运行应用程序,我必须从 Eclipse IDE 执行“gradle run”或“Run the Ratpack.groovy as a groovy script”。然后它说“在 localhost:8080 中运行的 Ratpack 服务器”。然后我可以将 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)

为了在 prod 中部署它,我将 jar 移到了服务器上。之后我应该怎么做才能启动 Ratpack 服务器或 API 服务?

4

1 回答 1

2

我建议设置一个 CI 管道来构建一个 java jar 并将工件部署到您的目标环境。

我建议使用 John Engleman 的 Shadow 插件https://plugins.gradle.org/plugin/com.github.johnrengelman.shadow

该插件生成一个影子 jar(类似于 Maven 的影子 jar),它可以选择包含用于启动应用程序的 bash 脚本或批处理脚本。

高层建议:

  1. 将影子插件添加到您的 gradle 构建文件

    插件 { 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. 调用 shell 脚本build/installShadow/$appName/bin/$appName来启动应用程序

对于更易于维护的解决方案,我建议将此 shell 脚本注册为服务或使用诸如 monit/upstart/ 等解决方案

有关部署到 Heroku 的更详细示例,请查看我的笔记:http ://danhyun.github.io/2016-gr8confeu-rapid-ratpack-groovy/#deploying_to_heroku

于 2016-06-06T15:39:19.500 回答