如何使boxfuse创建一个包含可在主arg中指定的可执行jar和配置文件的映像?

时间:2015-05-04 21:30:48

标签: boxfuse

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

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

通过JAR的流程读取文件conf.json,例如端口,数据库连接属性等。

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

在开发,测试和生产中,我想使用相同的可执行JAR,但每个环境使用不同的配置文件。我目前没有看到为每种环境设置不同图像的方法。我看到有一些支持打包specific config with Dropwizard payloads,但没有提到类似于可执行JAR的东西。

是否有更通用的方法可以将任意文件打包到图像中,我可以在jvm.main.args中引用可预测的路径?

P.S。在我的例子中,可执行JAR恰好是Vert.x应用程序,但我认为一般情况适用。

1 个答案:

答案 0 :(得分:1)

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

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

这允许您只构建一次jar文件和Boxfuse图像,并在所有环境中不加改变地运行它。

P.S。:我刚刚提出了一个问题,让您在不久的将来添加一流的Vert.x支持,以使事情变得更加轻松:https://github.com/boxfuse/boxfuse-issues/issues/28