如何将-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" )