scala – 使用sbt native packager进行基于环境变量的运行时配置
我正在使用sbt native packager插件创建我的应用程序的zip文件,以便部署到弹性beanstalk.我想在我的beanstalk环境中设置环境变量,并将它们用于在运行时配置我的应用程序.我试图在我的Procfile中引用env变量,如下所示:
web: ./bin/bridgeservice -Dhttp.port=$PORT 这不起作用,因为$PORT不会被打包程序生成的启动脚本插值. 我也尝试在build.sbt中定义变量,如下所示: import scala.util.Properties javaOptions in Universal ++= Seq( "-Dhttp.port=" + Properties.envOrElse("PORT","9004"),) 这也不起作用,因为打包程序在构建可分发zip时需要PORT env变量,并且在application.ini文件中硬编码默认值9004. 是否可以在应用程序启动时根据环境变量动态传递java选项? 解决方法
Universal中javaOptions中的设置被编译到conf / application.ini文件中,但相应于
sbt-native-packager docs application.ini目前不支持变量替换:
因此,基于env var的运行时设置可以通过以下几种方式实现: 解决方案#1.为生成的启动脚本添加额外的定义 在build.sbt中: bashScriptExtraDefines += """addJava "-Dhttp.port=${PORT:-9004}"""" 查看Application and runtime configuration文档了解更多信息. 解决方案#2:在目标服务器中设置JAVA_OPTS env var 只需在目标服务器上设置JAVA_OPTS环境变量,并使其可用于启动脚本.对于像AWS ElasticBeanstalk这样的环境,这可以是最简单的解决方案,其中可以在应用程序的环境配置页面上设置env vars. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |