[英]How to access environment variables in sbt assembly jar?
我有一个 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 启动命令移动到可以毫无问题地访问环境变量的 shell 脚本:
#!/bin/sh echo "API startup script running... with ENV=$ENV" java -Djava.io.tmpdir=/tmp/jetty -Drun.mode=production -Denv=$ENV -Drun.port=$MY_VAR_SEARCH_PORT -jar /usr/local/jetty/start.jar
ADD api_startup.sh /api_startup.sh RUN chown jetty:jetty /api_startup.sh CMD ["/api_startup.sh"]
docker run -it -p 80:80 -e MY_VAR_SEARCH_PORT=80 mydockerhubrepo/myimageid
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.