我正在玩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应用程序,但我认为一般情况适用。
答案 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