我有一个DockerFile,它使用jar文件和配置文件作为参数在单个docker容器中启动2个进程
java -jar process1.jar process1.cfg& java -jar process2.jar process2.cfg
process1.cfg和process2.cfg驻留在已安装的目录中。现在,只要任何cfg文件发生更改,我就需要重新启动相应的进程才能使新更改生效。所有这些都是在REST微服务中使用Java以编程方式完成的,该微服务更新配置文件并重新启动进程。关于如何去做的任何想法?
答案 0 :(得分:0)
您的Java应用程序可以通过启动配置更改监视服务/线程来解决此问题,该服务/线程通过在开始时启动并重新启动任何更改来管理实际的业务服务/线程(如果实际需要更改)重启)。文件更改监视是标准Java功能。该解决方案不需要任何REST,它不受微服务架构的约束(尽管它在其中更为明智)并且它不受docker容器的限制。
如果您不想要任何基于文件的配置,请执行相同的操作,但监控位可以是例如。基于vert.x的Web服务器,用于侦听外部REST请求,在启动或任何更新时提供配置。其余的保持不变。
在我目前的工作场所中,我们实际上有一个以这种方式运行的模块,它被部署到一个docker并使用文件系统监控和vert.x web服务器进行配置更改。
如果需要支持多个配置,您甚至可以进一步使监控位在内部启动多个实例。