如何让 boxfuse 创建一个包含可执行 jar 和要在 main arg 中指定的配置文件的图像?
How to make boxfuse create an image containing executable jar and configuration file to be specified in main arg?
我正在尝试 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,但每个环境使用不同的配置文件。我目前看不到为每个环境设置不同图像的方法。我看到有一些对打包的支持 specific config with Dropwizard payloads,但没有提到可执行 JAR 的类似内容。
是否有更通用的方法可以将任意文件打包到图像中,并在 jvm.main.args
中引用可预测的路径?
P.S。在我的例子中,可执行 JAR 恰好是一个 Vert.x 应用程序,但我认为一般情况适用。
您可以做的是将所有环境(开发、测试和生产)的配置打包到可执行 JAR 文件中。所以你会有 dev.json、test.json 和 production.json
然后您可以使用 environment detection 之类的技术和环境变量,在 运行 时间检测正确的环境并选择正确的配置,然后可以从 class路径而不是文件系统。
这允许您仅构建一次 jar 文件和 Boxfuse 图像,并且运行它在所有环境中都保持不变。
P.S.: 我刚刚提出了一个问题让你在不久的将来首先添加 class Vert.x 支持以使事情变得更容易:https://github.com/cloudcaptainsh/cloudcaptain/issues/28
我正在尝试 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,但每个环境使用不同的配置文件。我目前看不到为每个环境设置不同图像的方法。我看到有一些对打包的支持 specific config with Dropwizard payloads,但没有提到可执行 JAR 的类似内容。
是否有更通用的方法可以将任意文件打包到图像中,并在 jvm.main.args
中引用可预测的路径?
P.S。在我的例子中,可执行 JAR 恰好是一个 Vert.x 应用程序,但我认为一般情况适用。
您可以做的是将所有环境(开发、测试和生产)的配置打包到可执行 JAR 文件中。所以你会有 dev.json、test.json 和 production.json
然后您可以使用 environment detection 之类的技术和环境变量,在 运行 时间检测正确的环境并选择正确的配置,然后可以从 class路径而不是文件系统。
这允许您仅构建一次 jar 文件和 Boxfuse 图像,并且运行它在所有环境中都保持不变。
P.S.: 我刚刚提出了一个问题让你在不久的将来首先添加 class Vert.x 支持以使事情变得更容易:https://github.com/cloudcaptainsh/cloudcaptain/issues/28