【问题标题】:How to pass -mem to dockerized Play application如何将 -mem 传递给 dockerized Play 应用程序
【发布时间】:2017-06-17 09:47:34
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    对不起,我不是 scala 人,不知道如何将其应用于 sbt/activator/play 生成器,尽管 the dockerCommands section here 似乎相关,this Codacy blog post 也是如此。

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

    【讨论】:

      【解决方案2】:

      我进一步浏览了 sbt-native-packager 文档,并在“食谱”下找到了有关 Play 的部分。实现这一点的不那么令人困惑(无论如何对我来说)的方法是添加:

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

      【讨论】:

      • 是的,这是向应用程序添加 JVM 参数的推荐方式
      猜你喜欢
      • 2021-02-19
      • 1970-01-01
      • 2017-11-11
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-06
      相关资源
      最近更新 更多