1

我正在玩boxfuse试图“融合”包含可执行 JAR 的图像。我的可执行 JAR 被赋予配置文件的路径作为它的主要方法的参数,如下所示:

java -jar my-executable.jar -conf /some/path/to/my/conf.json

文件conf.json由 JAR 进程读入以配置例如端口、数据库连接属性等。

我了解如何使用 传递自定义参数-jvm.main.args="-conf /some/path/to/my/conf.json",但是,我不知道如何将配置文件放入图像本身。显然,路径必须指向图像中存在的有效文件

在开发、测试和生产中,我想使用相同的可执行 JAR,但为每个环境使用不同的配置文件。我目前没有看到为每个环境提供不同图像的方法。我看到对使用 Dropwizard payloads打包特定配置有一些支持,但没有提到可执行 JAR 的类似内容。

有没有更通用的方法可以将任意文件打包到图像中,并且可以在jvm.main.args?


PS 在我的情况下,可执行 JAR 恰好是Vert.x应用程序,但我认为一般情况适用。

4

1 回答 1

1

您可以做的是将所有环境(开发、测试和生产)的配置打包可执行 JAR 文件中。所以你会有 dev.json、test.json 和 production.json

然后,您可以使用环境检测之类的技术,例如使用环境变量在运行时检测正确的环境并选择正确的配置,然后可以从类路径而不是文件系统加载。

这允许您只构建一次 jar 文件和 Boxfuse 映像,并在所有环境中原封不动地运行它。

PS:我刚刚提出了一个问题,希望您在不久的将来添加一流的 Vert.x 支持以使事情变得更加容易:https ://github.com/cloudcaptainsh/cloudcaptain/issues/28

于 2015-05-05T08:56:17.317 回答