我有一个DockerFile,它使用一个jar文件和一个配置文件作为参数,在一个docker容器中启动2个进程
java -jar进程1.jar进程1.cfg& java -jar进程2.jar进程2.cfg
process1.cfg和process2.cfg驻留在挂载的目录中。现在,每当cfg文件中有任何更改时,我都需要重新启动相应的进程才能使新更改生效。所有这些都可以使用REST微服务中的Java以编程方式完成,该服务更新配置文件并重新启动进程。你知道该怎么做吗?
发布于 2016-08-12 03:30:45
这个问题通常可以通过Java应用程序启动配置更改监视服务/线程来解决,该服务/线程通过在开始时启动实际的业务服务/线程并在任何更改时重新启动(如果更改实际上需要重新启动)来管理实际的业务服务/线程。文件更改监视是标准的Java功能。该解决方案不需要任何REST,它不绑定到微服务架构(尽管它在其中更明智),也不受停靠容器的限制。
如果你不想要任何基于文件的配置,也可以这样做,但是监控位可以是一个基于vert.x的web服务器,监听外部REST请求,提供配置,在启动时或任何更新。其余部分保持不变。
在我目前的工作场所,我们实际上有一个模块就是以这种方式工作的,它被部署到docker上,并使用文件系统监控和vert.x web服务器进行配置更改。
如果需要支持多个配置,您甚至可以更进一步,让监控位在内部启动多个实例。
https://stackoverflow.com/questions/38904434
复制相似问题