属性 文件中的 PCF UPS

PCF UPS in a property file

我有一个 spring 引导应用程序,它是通过 jenkins 管道构建并部署到关键的云铸造厂的。假设我有一个具有以下值的属性 (application.properties) 文件:

API_URL = http://API_URL/

以及代码中某处对 属性 的引用。这是为了设置与环境无关的构建。

我想做的是通过 PCF 上用户提供的服务将其公开为 VCAP,以便属性文件变成:

API_URL = ${vcap.services.api_url.credentials.url}

我是 运行 pcf 上的 cups 命令并将服务绑定到我的应用程序,但是当通过 jenkins 管道提供属性文件时,它出错并抱怨它无法解析上述值。我还将绑定包含在 manifest.yml 文件中。人们已经声明 spring 引导支持开箱即用的 vcap 值解析,但我无法实现这一点。对我做错了什么有什么想法吗?

Spring 此处描述了引导的自动功能。

https://docs.spring.io/spring-boot/docs/2.0.3.RELEASE/api/org/springframework/boot/cloud/CloudFoundryVcapEnvironmentPostProcessor.html

它基本上会使用 VCAP_SERVICES 环境变量并将其展平。它在 vcap.services.* 下公开,下一位是服务实例名称,后跟您在服务实例下公开的属性。

如果您遇到问题,我建议您启用 Spring Boot Actuator。它具有可以转储属性的端点。您可以使用它来确认它们是否可用,还可以查看确切的名称,因为有时很难获得完全正确的 属性 名称。

就其价值而言,如果您只有一个 属性 并且它不敏感,您可以考虑通过环境变量传递它。由于 Spring Boot 自动将 env 变量映射到属性中,因此使用起来更容易一些。

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

希望对您有所帮助!