【问题标题】:Docker container stops without any errors while runnning sbt/play applicationDocker 容器在运行 sbt/play 应用程序时停止而没有任何错误
【发布时间】:2016-12-26 01:34:27
【问题描述】:

我遇到了一个问题,我的 docker 容器将在运行约一天后以退出代码 137 退出。容器的日志不包含指示已发生错误代码的信息。此外,尝试重新启动容器会返回一个错误,即应用程序的 PID 已存在。

容器是使用 sbt docker 插件 sbt docker:publishLocal 构建的,然后使用 docker run --name=the_app --net=the_app_nw -d the_app:1.0-SNAPSHOT.

我还运行了 3 个其他 docker 容器,它们共同使用了 90% 的可用内存,但它只有那个特定的容器退出。

寻找任何关于下一步看哪里的建议。

【问题讨论】:

  • 请提供来自失败容器的docker inspect the_app 的输出,并显示出现错误的重启命令和输出。容器关闭时docker ps -a 的输出也可能会有所帮助。

标签: docker playframework sbt


【解决方案1】:

错误代码 137 (128+9) 表示它被某些东西杀死(如kill -9 yourApp)。那东西可以是很多东西(可能是因为 docker 或其他东西使用了太多资源而被杀死,也可能是内存不足等)

关于pid问题,你可以添加到你的build.sbt这个

javaOptions in Universal ++= Seq(
  "-Dpidfile.path=/dev/null"
)

基本上这应该指示 Play 不要创建 RUNNING_PID 文件。如果它不起作用,您可以尝试使用 JAVA_OPTS 环境变量直接在 Docker 中传递该选项。

【讨论】:

    猜你喜欢
    • 2020-07-21
    • 1970-01-01
    • 2011-06-22
    • 2022-12-10
    • 2018-12-19
    • 1970-01-01
    • 2022-09-26
    • 1970-01-01
    • 2018-04-06
    相关资源
    最近更新 更多