【问题标题】:Launch new process in a Dockerized Java Web service在 Dockerized Java Web 服务中启动新进程
【发布时间】:2018-06-24 19:41:03
【问题描述】:

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

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

【问题讨论】:

    标签: java docker


    【解决方案1】:

    这在技术上是可行的,但您会遇到一些问题。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多