将Spring Boot Web和Batch应用程序打包在一起进行PCF部署



这听起来很容易。但我想将Spring Boot Web应用程序和Java程序(也称为批处理作业(打包在一起,并将其部署到PCF中。

批将只是坐在那里无所事事。但我会在命令行运行它。(pcfrun-task(。

我们该如何包装?

我认为有多种方法可以做到这一点,但从高层来看,您需要的是以与执行应用程序的方式一致的方式打包应用程序。

对于您的Web应用程序,您希望它成为主要命令。当Java构建包运行时,它将检测到一个Spring Boot应用程序,并创建一个能够运行应用程序的启动命令。最简单的方法是不要以影响或破坏包装的方式更改包装。只需让构建包选择启动命令并使用它。

如果您可以在本地java -jar您的应用程序,并且它启动您的web应用程序,那么您应该已经做好了准备。这对于构建包来说应该足够了。

现在,针对您的Batch应用程序。如果你有一个联合代码库,其中web和批处理代码在同一个项目中&打包到同一个JAR文件中,然后只需接受Java构建包为web应用程序生成的命令,并对其进行修改以启动不同的类(可能还有内存限制(。命令的其余部分应该没问题。

如果您有单独的代码库,那么您需要以某种方式将两者连接起来。运行cf push -p path/to/jar时,cf CLI将提取并上载JAR中的所有文件。这就是为什么您需要连接这两个代码库,因为您只能为应用程序上传一个JAR文件。

我认为一个简单的方法是将您的批处理应用程序的所有编译代码添加到JAR中的一个子目录下,如batch/...(请注意您选择的子目录,您希望确保不会通过web应用程序下载来暴露您的批应用程序(。它应该以这种方式上传得很好,并且不应该影响Java构建包检测&运行您的web应用程序。

然后,您可以使用Java构建包生成的启动命令,调整类路径以指向子目录,调整启动类,可选地调整内存设置,并使用它来启动批处理应用程序。

再说一次,我相信可能还有其他方法可以组合东西,但我希望这涵盖了CloudFoundry&Java构建包,以便您可以以适合您的项目的方式将内容混合在一起。

最新更新