我正在运行一个 jar 应用程序,该应用程序使用一些需要与 jar 位于同一路径中的资源文件夹:
这是我的文件夹如何使用的示例:
$ ls
__files mappings wiremock-standalone-2.24.0.jar
我可以使用 jar 文件推送 jar 文件
cf push wiremock-standalone-2.24.0.jar
但无法将两个文件夹映射和__files推送到 pcf。
当我这样做时:
cf push wiremock/__files
它尝试创建一个名为 wiremock/__files 的应用程序:
Getting app info...
Creating app with these attributes...
+ name: wiremock/__files
path: /tmp/build/2985dd2f
我应该使用什么命令行?
你可以做的是将所有丢失的文件添加到你的JAR包中:
cp wiremock-standalone-2.24.0.jar wiremock-standalone-2.24.0-fat.jar
jar uf wiremock-standalone-2.24.0-fat.jar ./lib
比你的命令完全相同,你所要做的就是指向Java应用程序中的新资源。
cf push
用于将应用程序部署到容器。使用cf push
部署的任何内容都应是可执行应用。即使您能够成功cf push wiremock/__files
,这些文件最终也会位于不同的容器中,并且无法从为cf push wiremock-standalone-2.24.0.jar
创建的容器中访问。
听起来您需要 jar 文件、__files
和mappings
都位于同一个容器中。为此,您需要将它们全部捆绑到一个存档中并将它们cf push
在一起。
正如@Alex Rashkov所建议的那样,我将文件添加到jar中,并且效果很好。
我的问题与原始问题完全相同,我想使用预配置的映射将 wiremock 部署到 PCF,所以我做了以下操作:
- 在本地启动了 wiremock 服务器,并通过 REST API 定义了所需的映射(
/__admin/mappings/import
或/__admin/mappings/new
( - 已保存映射 (
__admin/mappings/save
( - 现在,所有映射都将显示为映射目录中的文件
- 将映射目录添加到 jar 文件 (
jar -uf wiremock-standalone-2.24.0.jar mappings
(。 我刚刚直接更新了下载的 jar 文件,但我可以看到您可能想按照上述建议更新副本的位置。 - 将更新的 JAR 文件推送到 PCF (java_buildpack(。 在 PCF 中运行的 wiremock 服务器将看到映射文件夹中的映射,并预定义这些映射。
感谢@Alex拉什科夫的小费!