我正在尝试在具有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有或没有限制。
我缺少一些限制吗?
答案 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
由于低内存实例上不需要编译步骤,现在很多项目都可以运行,即使内存少于推荐内容。