【发布时间】:2018-03-11 22:47:26
【问题描述】:
我有一个 sbt 项目,可以在指定端口上启动服务器。以下是来自build.sbt的相关摘录:
port in container.Configuration := sys.env.getOrElse("MY_VAR_SEARCH_PORT", 8080).toString.toInt
当我从 sbt 运行项目时,$MY_VAR_SEARCH_PORT 被选中,一切都很好。
但是,对于 prod,我使用 sbt-assembly 并在 docker 容器中运行 jar,因此启动命令如下所示:
docker run -it -p 80:80 -e MY_VAR_SEARCH_PORT=80 mydockerhubrepo/myimageid /docker-entrypoint.sh java -Djava.io.tmpdir=/tmp/jetty -Drun.mode=production -Denv=prod -jar /usr/local/jetty/start.jar
我可以看到 var 被传递给容器,但它没有被 jar 拾取,因为它在默认端口上启动了一个服务器。
什么是让 sbt-assembly jar 访问环境变量的好方法?或者也许我可以将此 var 作为 java 参数传递 - 那么,如何从 build.sbt 文件中访问它?
【问题讨论】:
-
你找到解决办法了吗?
-
我发布了一个答案。如果该答案对您有用,请告诉我。或者随意发布你自己的:)
标签: java jar sbt environment-variables sbt-assembly