我遇到了一个问题,我的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%的可用内存,但它只有那个特定的容器才能退出。
寻找有关下一步的建议。
答案 0 :(得分:2)
错误代码137(128 + 9)表示它被某些东西杀死(如kill -9 yourApp
)。这可能是很多事情(也许它被杀死了,因为它使用了太多资源的码头工人或其他东西,也许是内存不足等等)
关于pid问题,您可以添加到build.sbt
这个
javaOptions in Universal ++= Seq(
"-Dpidfile.path=/dev/null"
)
基本上这应该指示Play不创建RUNNING_PID
文件。如果它不起作用,您可以尝试使用JAVA_OPTS
env变量直接在Docker中传递该选项。