第一个 docker 进程完成后 JVM 意外退出

Unexpected JVM exit after first docker process is completed

我有一个应用程序 运行在一个 docker 容器中包含两个服务。我 运行遇到 JVM 在完成第一个过程(即从播放项目构建 jar)后意外退出并显示以下消息的情况:

[info] Your package is ready in /app/.../project-0.1.0.zip
[success]
[Thread-2] [CoordinatedShutdown(akka://sbt-web)] Starting coordinated shutdown from JVM shutdown hook
Archive:  /app/.../target/universal/project-0.1.0.zip

第二个过程(提取 jar 和 运行 应用程序)从 Archive: /app/.../target/universal/project-0.1.0.zip 开始,但未能提取 jar。 docker 容器不会退出。

令人惊讶的是,在重建和 运行 容器后,这个问题在多个 运行 中都没有出现。另外,我最近将我的 sbt 版本从 0.13.11 升级到 1.1.1。从那时起,我开始面对CoordinatedShutdown这个问题。因此,我很确定这不是 docker 问题。

我也试过添加 akka.coordinated-shutdown.exit-jvm = offakka.coordinated-shutdown.run-by-jvm-shutdown-hook = off 到我的 application.confCoordinatedShutdown 仍然出现。有什么解决办法吗?

我发现问题是播放应用程序无法在其容器中启动,因为 RUNNING_PID 文件没有被删除。最后,设法通过阻止 Play 使用 -Dpidfile.path=/dev/null.

创建 PID 来解决这个问题

相关问题:

参考文献:https://www.playframework.com/documentation/2.6.x/Deploying#play-pid-configuration