如何将-mem传递给dockerized Play应用程序

时间:2017-01-31 19:53:40

标签: docker playframework-2.0 sbt-native-packager

我正在玩Play! 2.5。当我运行我的应用程序时,我使用-mem 4000运行它。如何将此选项发送到我使用activator docker:publish创建的Docker镜像?我查看了activator show dockerCommands指定的命令,我看到ENTRYPOINT是bin / myappname - 我可以编辑它以在那里添加-mem 4000吗?或者我需要使用-Xmx和-Xms?我是否将这些选项放在其他地方?我看过一些对application.ini文件的引用,但我不确定将它放在Play!应用程序中。

2 个答案:

答案 0 :(得分:1)

在具有ENTRYPOINT的普通Dockerfile中,您可以使用CMD指定传递给入口点命令的选项。

ENTRYPOINT ["bin/myappname"]
CMD [ "-mem", "4000" ]

抱歉,我不是斯卡拉人,也不知道如何将其应用于sbt / activator / play生成器,尽管the dockerCommands section here似乎也很有用,this Codacy blog post。< / p>

  

让我们通过添加:

覆盖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) }
}

答案 1 :(得分:1)

我进一步探讨了sbt-native-packager文档,在Recipes下,找到了一个关于Play的部分。不那么混乱(对我来说,无论如何)这样做的方法是添加:

    javaOptions in Universal ++= Seq(
      // JVM memory tuning
     "-J-Xmx4000m",
     "-J-Xms512m"
    )