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



我希望绑定一个PCF(Pivotal Cloud Foundry(服务,以允许我们在PCF环境中设置UI使用的某些api端点。我想使用这个服务中的值来覆盖根目录文件"config.json"中的值。有什么例子可以完成这类事情吗?

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

手动Ex:

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,所以当这个脚本运行时,它应该在路径上可用,以读取环境变量并生成配置文件。

希望能有所帮助!

最新更新