postgresql - 在 Cloud Foundry manifest.yml 中指定 postgresql 数据库名称
问题描述
有没有办法在 cloud Foundry manifest.yml 文件中指定要连接的 postgresql 数据库名称?我一直在翻阅文档,但尚未找到此特定信息。
我在想象这样的事情:
applications:
- name: my-app
routes:
- route: my-app.mybluemix.net
services:
- postgres
dbname: database2
使用这种方法,可以仅通过VCAP_SERVICES
解析模块提供的连接字符串(在节点的情况下为cfenv)建立 postgresql 连接。
如果这不可能,我将设置一个dbname
环境变量并构建我自己的连接字符串。
解决方案
Cloud Foundry 应用程序 manifest.yml 中没有类似的东西。
manifest.yml 只接受服务实例名称的列表,具有这些名称的服务将绑定到您的应用程序。它不允许您设置其他元数据。
https://docs.cloudfoundry.org/devguide/deploy-apps/manifest-attributes.html#services-block
我不知道这些是否有帮助,但是当您cf bind-service
直接使用时,您可以使用两个额外的规定(在我写这篇文章时 manifest.yml 不支持这些规定):
任意绑定参数。除非您的服务代理支持它们,否则这些可能无济于事,但这是将附加信息传递给服务代理的一种方式。如果你的经纪人支持它,理论上你可以说给我一个名为 XYZ 的数据库,通过这种方式传递一些配置。
命名服务绑定。这提供了相当于第二个名字的东西。目的是您可以创建名称为 X 的服务,但您的应用程序可以查找名称为 Y 的服务绑定。您可以使用它来交换不同名称的服务,但仍向应用程序公开相同的绑定名称,以便它总能找到服务。
如果您尝试将其他一些与服务实例相关的元数据传递给您的应用程序,则需要以其他方式进行。就像您想告诉它数据库名称或连接池大小等一样。使用您提到的环境变量是一种选择。您可以使用传递给您的应用程序的配置文件或 cli 参数。您选择的可能是您正在使用的库/框架中的偏好/支持问题。
对于它的价值,我见过的大多数服务代理都会通过并告诉您要使用的特定数据库名称。如果代理说连接到 db XYZ 并且您连接到 myCoolDb,则连接将失败。只是想提一下这个。你的旅费可能会改变。
推荐阅读
- php - 有没有更有效的方法来编码这个条件语句?PHP中有最大数量的条件吗?
- python - 编码了一个不和谐,我认为它看不到我的其余代码
- r - 如何从地图中消除灰色区域和南极洲?
- node.js - 错误:ENOENT:没有这样的文件或目录,打开 'F:\login\uploads\2019-05-12T18:23:38.048Z20190319_214122.jpg'
- python - 由于 requirements.txt,Bot 没有部署在 heroku 上
- javascript - 如何使用事件处理程序修复简单功能
- android - 如何在使用 Apollo 生成代码时修复“主要 GraphQL 源”错误?
- sql-server - 当只有 20 个同时用户将跟踪数据插入地理表时,CPU 使用率会很高
- python - 我可以使用哪些其他数据结构来存储一系列值并且是不可变的?这将如何解决?
- windows - Windows 终端和(MinGW,Cygwin)