如何将-mem传递给dockerized Play应用程序
我正在使用Play! 2.5。 当我运行我的应用程序时,我使用-mem 4000来运行它。如何将此选项发送到使用activator docker:publish
docker创build的Docker镜像activator docker:publish
? 我查看了激活码activator show dockerCommands
指定的命令,并且我看到ENTRYPOINT是bin / myappname – 我可以编辑它来添加-mem 4000吗? 或者我需要使用-Xmx和-Xms? 我把这些选项放在别的地方吗? 我已经看到了一些application.ini文件的引用,但我不知道该放在Play!应用中的位置。
在具有ENTRYPOINT的普通Dockerfile中,可以使用CMD
指定传递给入口点命令的选项。
ENTRYPOINT ["bin/myappname"] CMD [ "-mem", "4000" ]
对不起,我不是一个斯卡拉人,不知道如何将这个应用到sbt / activator / play generator,虽然这里的dockerCommands
部分似乎是相关的,也是这个Codacy的博客文章 。
让我们通过添加以下内容来覆盖build.sbt中的dockerComands:
dockerCommands := dockerCommands.value.flatMap{ case cmd@Cmd(“FROM”,_) => List(cmd, Cmd(“RUN”, “apk update && apk add bash”)) case other => List(other) } }
所以可能
dockerCommands := dockerCommands.value.flatMap{ case cmd@ExecCmd("ENTRYPOINT",_) => List(cmd, ExecCmd("CMD", """[ "-mem", "4000" ]""")) case other => List(other) } }
我进一步探讨了sbt-native-packager文档,在Recipes下find了关于Play的部分。 对我来说,减less混淆(对我来说)是为了补充:
javaOptions in Universal ++= Seq( // JVM memory tuning "-J-Xmx4000m", "-J-Xms512m" )