SBT在用完公羊时死亡

我试图运行我的斯卡拉应用程序在800MB的docker容器,( docker run -m=800m mindlevel ),但它被完成编译前被杀死。

 [info] Compiling 10 Scala sources to /root/mindlevel-backend/target/scala-2.12/classes... [info] 'compiler-interface' not yet compiled for Scala 2.12.1. Compiling... [info] Compilation completed in 8.631 s /usr/local/sbt/bin/sbt-launch-lib.bash: line 58: 57 Killed "$@" 

我试图限制SBT堆:

 CMD ["sbt", "-mem", "700", "run"] 

但它仍然在同一个地方被杀害。 docker容器没有任何限制,它运行良好。 在EC2微型实例(1GB RAM)中运行时,它也会崩溃,对SBT和Docker有限制或没有限制。

我缺less一些限制吗?

为了让它以小于1GB的堆运行,我用sbt assembly预编译了这个项目, sbt assembly使得你的项目和你所有的依赖项都打包了一个jar。

通过添加来安装它:

 addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.5") 

project/assembly.sbt

然后用sbt assembly生成jar sbt assembly ,它将把jar放在./target/scala-<VERSION>/<PROJECT>-assembly-1.0.jar

然后简单地运行您的项目:

 scala target/scala-<VERSION>/<PROJECT>-assembly-1.0.jar 

由于现在在低内存实例上不需要编译步骤,所以即使内存less于build议值,也可以运行很多项目。