当用完公羊时,SBT被杀死了

时间:2017-08-16 05:24:34

标签: scala docker sbt

我正在尝试在具有800MB RAM(docker run -m=800m mindlevel)的docker容器中运行我的scala应用程序,但它在编译完成之前就被杀死了。

[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内存)中运行它时,它也会崩溃,对SBT和Docker有或没有限制。

我缺少一些限制吗?

1 个答案:

答案 0 :(得分:1)

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

通过添加:

来安装它
project/assembly.sbt

sbt assembly

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

然后只需运行您的项目:

/{video-id}/comments

由于低内存实例上不需要编译步骤,现在很多项目都可以运行,即使内存少于推荐内容。