在Dockerized Java Web服务中启动新流程

时间:2018-06-24 19:41:03

标签: java docker

是否可以将应用程序容器化到Docker容器中,然后在运行时创建新进程? 我有这样的东西:

launchProcess() {
  Runtime runtime = Runtime.getRuntime();
  String launchProgramCommand = "some command that launches a program";
  Process process = runtime.exec(launchProgramCommand);
}

1 个答案:

答案 0 :(得分:1)

从技术上讲这是可能的,但是您会遇到一些问题。

当docker容器停止时,您的主应用程序将退出,但外部进程不一定会正常退出。如果希望它们正常退出,则必须实现shutdown hook并使用Process.waitFor等到外部进程终止。或者,您可以使用Process.destroy破坏外部过程,该过程取决于Java实现。

您还可以获取进程(How to get a process id of exe running through java program)的pid并发送适当的信号以使用kill命令终止它。