docker - Docker容器在运行sbt/play应用程序时停止运行而没有任何错误

标签 docker playframework sbt

我遇到了一个问题,即在运行约一天后,我的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%的可用内存,但它仅是退出的那个特定容器。

寻找有关下一个地方的建议。

最佳答案

错误代码137(128 + 9)表示它已被某种东西杀死(如kill -9 yourApp)。那东西可能是很多东西(也许是因为被docker或其他东西占用了过多的资源而被杀死,也许它已耗尽内存,等等)

关于pid问题,您可以将此添加到build.sbt

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

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

关于docker - Docker容器在运行sbt/play应用程序时停止运行而没有任何错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39029737/

相关文章:

scala - 在 sbt install 之前运行 apt-get update 时,收到 HTTP 403

shell - 在 shell 的同一行中设置和使用 docker alpine 中的环境变量

java - 为什么 finally 在 playframework renderbinary 之后不阻止执行?

playframework - @Constraints.Required 和@Formats.NonEmpty 之间有什么区别?

java - JPA树[/Hibernate]

scala - 我怎样才能有一个可选的 Sbt 设置?

performance - Scalatest 需要 30 秒才能开始测试

docker - Alpine 3.18 Docker 镜像在使用 & 运行后台命令后不遵守 `sleep` shell 命令

java - JHipster一代MS陷入无限循环

shell - 如何让两个 JAR 在 "docker run container"上自动启动