带有 sbt docker:publishLocal 和 docker 运行 的 javaOptions
javaOptions with sbt docker:publishLocal and docker run
如果我运行宁我的应用程序没有Docker,我会做这样的事情:
./myapp -Dconfig.file=conf/application.prod.conf -Dlogger.resource=logback.prod.xml
事实上,我可以做得更好,将它们放入 build.sbt
文件中:
// Production Mode
javaOptions in Production ++= Seq(
"-Dconfig.file=conf/application.prod.conf",
"-Dlogger.resource=logback.prod.xml"
)
然后它们将在我 运行 我的应用程序时应用:
./myapp # options now applied via build.sbt
当我使用 sbt docker:publishLocal
构建我的应用程序时,然后 运行 使用 docker 运行,javaOptions
不会生效。
如何让这些javaOptions
在我docker run
时生效?
找到解决方法。您可以像这样设置 dockerEntrypoint
:
// build.sbt
dockerEntrypoint := Seq("bin/myapp", "-Dconfig.file=conf/application.prod.conf", "-Dlogger.resource=logback.prod.xml")
javaOptions
可以通过
提供给 sbt-native-packager
javaOptions in Universal ++= Seq(
// -J params will be added as jvm parameters
"-J-Xmx2048m",
"-J-Xms256m"
)
请注意,这些选项将应用于所有生成的包(Debian、Rpm 等),而不仅仅是 Docker。请参阅讨论 here。
如果我运行宁我的应用程序没有Docker,我会做这样的事情:
./myapp -Dconfig.file=conf/application.prod.conf -Dlogger.resource=logback.prod.xml
事实上,我可以做得更好,将它们放入 build.sbt
文件中:
// Production Mode
javaOptions in Production ++= Seq(
"-Dconfig.file=conf/application.prod.conf",
"-Dlogger.resource=logback.prod.xml"
)
然后它们将在我 运行 我的应用程序时应用:
./myapp # options now applied via build.sbt
当我使用 sbt docker:publishLocal
构建我的应用程序时,然后 运行 使用 docker 运行,javaOptions
不会生效。
如何让这些javaOptions
在我docker run
时生效?
找到解决方法。您可以像这样设置 dockerEntrypoint
:
// build.sbt
dockerEntrypoint := Seq("bin/myapp", "-Dconfig.file=conf/application.prod.conf", "-Dlogger.resource=logback.prod.xml")
javaOptions
可以通过
sbt-native-packager
javaOptions in Universal ++= Seq(
// -J params will be added as jvm parameters
"-J-Xmx2048m",
"-J-Xms256m"
)
请注意,这些选项将应用于所有生成的包(Debian、Rpm 等),而不仅仅是 Docker。请参阅讨论 here。