有没有办法在cloud foundry manifest.yml文件中指定要连接的postgresql数据库名称? 我翻遍了文档,还没有找到这个具体信息。
我想象的是这样的。
applications:
- name: my-app
routes:
- route: my-app.mybluemix.net
services:
- postgres
dbname: database2
用这种方法,一个postgresql的连接可以通过以下方式来实现 VCAP_SERVICES
解析模块(cfenv 在节点的情况下)。)
如果这不可能,我将只设置一个 dbname
环境变量,并建立我自己的连接字符串。
Cloud Foundry 应用程序manifest.yml中没有这样的内容。
manifest.yml 只接收服务实例名称的列表,带有这些名称的服务将绑定到您的应用程序。它不允许您设置其他元数据。
https:/docs.cloudfoundry.orgdevguidedeploy-appsmanifest-attributes.html#services-blocks
我不知道这些会不会有帮助,但当你... cf bind-service
直接有两个额外的条款可以使用(在我写这篇文章时,manifest.yml还不支持这些条款)。
任意的绑定参数. 除非你的服务代理支持这些功能,否则这些可能不会有什么帮助,但这是向服务代理传递额外信息的一种方式。如果你的代理支持它,理论上你可以说给我一个名为XYZ的数据库,通过这种方式传递一些配置。
命名服务绑定. 这相当于提供了第二个名字。这样做的目的是,你可以用X的名字创建服务,但你的应用程序可以用Y的名字查找服务绑定。你可以用这个来交换不同名字的服务,但仍然向应用程序暴露相同的绑定名,这样它就能始终找到服务。
如果你想把一些其他服务实例相关的元数据传递给你的应用程序,你就需要用其他方式来做。比如你想告诉它数据库名称或者连接池大小等等。像你提到的使用环境变量是一种选择。你可以使用配置文件或传递给应用程序的 cli 参数。你选择什么可能是你所使用的库框架中的偏好支持问题。
值得一提的是,我见过的大多数服务经纪商都会传入并告诉你一个特定的数据库名称来使用。如果broker说连接到db XYZ,而你却连接到myCoolDb,连接就会失败。只是想提到这一点。你的里程可能会有所不同。