Sou*_*nta 15 deployment scala sbt akka typesafe-config
我有一个Akka应用程序,它使用了多个配置值(IP地址,端口号)resource/application.conf.我正在使用sbt-assembly插件创建一个超级jar然后部署这个jar.
有没有办法application.conf通过使用uber jar之外的另一个文件来覆盖整个文件?(即,使用新conf文件中的值)
yǝs*_*ǝla 26
有多种方法可以实现这一目标:
您可以设置一个类路径以包含application.conf在外部目录中,并在其他类路径条目(如jar)之前显示在类路径中.为此,您可以使用常规java -classpath myconfdir:theapp.jar并明确指定主类.
您也可以include "application"在conf文件中使用指令将另一个conf文件包含到您的文件中.
您可以设置环境变量application.conf,指向要包含的文件.之后你在shell中设置了env.
您可以通过编程方式覆盖值:config.withValue("hostname", ConfigValueFactory.fromAnyRef("localhost").ActorSystem如果没有提供,则从默认conf中获取Conf对象或加载.
到目前为止最简单的方法是使用-Dconfig.resource=/dev.confjava命令行参数选择另一个文件.
有关详细信息,请参阅此处的官方文档.
我们在产品中这样做:
#deploy_prod.conf
include "application"
akka.remote.hostname = "prod.blah.com"
# Example of passing in S3 keys
s3.awsAccessKeyId="YOUR_KEY"
s3.awsSecretAccessKey="YOUR_SECRET_KEY"
Run Code Online (Sandbox Code Playgroud)
上述文件必须以.conf. 它具有所有生产环境特定的配置,并且位于jar之外,因此您可以将相同的 Akka 工件部署到所有服务器。它将覆盖application.conf.
然后在启动脚本中:
java -Dconfig.file=/full/path/deploy_prod.conf -jar your.jar com.your.Main
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11550 次 |
| 最近记录: |