代码之家  ›  专栏  ›  技术社区  ›  mrdoubtful

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

  •  0
  • mrdoubtful  · 技术社区  · 6 年前

    我有一个应用程序在docker容器中运行两个服务。我遇到的情况是,JVM在完成第一个过程(即从play项目构建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 但无法提取罐子。docker容器未退出。

    令人惊讶的是,在重建和运行容器后的多次运行中都没有发现此问题。此外,我最近升级了我的sbt版本 0.13.11 1.1.1 . 从那以后,我开始面临 CoordinatedShutdown . 因此,我非常确定这不是docker的问题。

    我还尝试添加 akka.coordinated-shutdown.exit-jvm = off akka.coordinated-shutdown.run-by-jvm-shutdown-hook = off 给我的 应用形态 但是 协调停机 仍然发生。有什么解决方案吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   mrdoubtful    6 年前

    我发现问题是play应用程序未能在其容器中启动,因为尚未删除正在运行的\u PID文件。最后,通过阻止播放创建PID来解决此问题 -Dpidfile.path=/dev/null .

    相关问题: Restarting Play application Docker container results in 'This application is already running' - RUNNING_PID is not deleted

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