【发布时间】:2017-07-11 21:52:21
【问题描述】:
在不解释为什么我们让这次升级如此缓慢的情况下,我们将在升级到 Grails 3.3.0 (Java 8) 时分解我们的 Grails 2.2.4 (Java 6) 单体。这个想法是渐进式升级,而不是试图做一个大爆炸式的升级,这似乎是一件好事。虽然我们正在这样做,但我们希望最终得到更多基于服务而不是单片的东西。
为了将外部依赖降至最低,我决定使用可执行的战争部署模型,因此当我们将构建工件部署到生产环境中的各种环境时,事情只能根据定义的配置元素而有所不同。
我已将第一部分移至 Web 服务中,并且在我的本地环境中一切正常;也就是说,我已经重构了单体来调用服务,并让服务在命令行中使用 java -jar 运行。现在我正在尝试将它与我们的自动化构建和部署工具 (Bamboo) 集成。
我们当前的流程(对于单体应用程序)是停止 Tomcat 实例 (shutdown.sh),部署战争,然后重新启动 Tomcat (startup.sh)。当它作为可执行战争运行时,我该如何实现这一点 - 具体来说,停止正在运行的实例/服务?
我的第一个想法是编写一个脚本来查找特定 java -jar 进程的 pid 并将其杀死,但这似乎不优雅。有没有更好的办法?
谢谢!
【问题讨论】:
-
可以在 docker 容器中部署您的服务并根据需要启动停止容器!
-
是的,引入 Docker、Spring Boot 或类似的东西肯定会奏效,但我希望在我们确定价值后推迟对这项工作的投资。前期投入大量资金开始实验,感觉不是很灵活。希望有一种方法可以使 Grails 生产环境的可执行战争功能做好准备。