我正在尝试在具有 800MB RAM 的 docker 容器中运行我的 scala 应用程序,(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 都有限制。
我缺少一些限制吗?
为了让它以小于 1GB 的堆运行,我用sbt assembly
预编译了该项目,这使得一个 jar 与您的项目和所有依赖项打包在一起。
通过添加以下内容进行安装:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.5")
到project/assembly.sbt
然后生成带有sbt assembly
罐子,将罐子放入./target/scala-<VERSION>/<PROJECT>-assembly-1.0.jar
然后只需使用以下命令运行您的项目:
scala target/scala-<VERSION>/<PROJECT>-assembly-1.0.jar
由于在低内存实例上不需要编译步骤,因此即使内存少于建议的内存,许多项目也可以运行。