将NodeJS应用程序变量绑定到Pivotal Cloud Foundry Service

时间:2018-07-13 13:59:16

标签: node.js pivotal-cloud-foundry

我希望绑定PCF(Pivotal Cloud Foundry)服务,以允许我们设置PCF环境中UI所使用的某些api端点。我想使用此服务中的值来覆盖根目录文件“ config.json”中的值。有没有可以完成这种事情的例子?

1 个答案:

答案 0 :(得分:0)

解决此问题的主要方法是让您的应用程序执行此解析。大多数(全部?)编程语言都使您能够加载环境变量和解析JSON。使用这些功能,您要做的就是读取VCAP_SERVICES环境变量并解析JSON。平台将在此处插入绑定服务中的信息。从那里,您可以获得配置信息,因此可以使用绑定服务中的值来配置应用。

手册示例:

var vcap_services = JSON.parse(process.env.VCAP_SERVICES)

或者您可以使用一个库。有一个方便的Node.js库,名为cfenv。您可以在文档中详细了解这两个选项。

https://docs.cloudfoundry.org/buildpacks/node/node-service-bindings.html

如果您无法阅读应用程序内部的配置,则可能存在计时问题,并且在应用程序启动之前需要信息,则可以使用平台的运行前挂钩。

https://docs.cloudfoundry.org/devguide/deploy-apps/deploy-app.html#profile

运行时挂钩允许您的应用程序包含一个名为.profile的文件,该文件将在您的应用程序之前执行。 .profile文件是一个简单的bash脚本,可以执行准备运行应用程序所需的任何操作。唯一要注意的是,这需要很快发生,因为它必须在您的应用程序能够启动且应用程序具有有限的启动时间(通常为60秒)之前完成。

在您的情况下,您可以使用jq来解析您的值,并将其插入配置文件中,或者使用sed来覆盖模板值。另一个选择是运行一个小的Node.js脚本,因为您的应用程序正在使用Node.js,因此该脚本在运行时应该在路径上可用,以读取环境变量并生成您的配置文件。

希望有帮助!