在Openshift中连接数据库的正确方法是什么?

时间:2017-11-11 10:53:23

标签: node.js postgresql openshift

我正在运行一个nodejs应用程序和一个PostgreSQL数据库。目前,我借助以下环境变量从nodejs连接到数据库:POSTGRESQL_HOSTPOSTGRESQL_USERPOSTGRESQL_PASSWORDPOSTGRESQL_PORTPOSTGRESQL_USERPOSTGRESQL_PASSWORD被映射到正确的秘密'。端口是静态的,所以它永远不会改变。我遇到的问题是主机。目前,我已在POSTGRESQL_HOST中手动输入PostgreSQL pod的IP地址,但每次重新部署实例时都会更改。连接数据库的正确方法是什么?

2 个答案:

答案 0 :(得分:3)

在部署配置的环境变量中设置POSTGRESQL_HOST时,将其设置为PostgreSQL数据库服务的名称,而不是IP。服务名称作为主机名添加到内部DNS服务器中,并映射到适当的IP。因此,当服务名称用作主机名时,事情将自动解决。

FWIW,我个人会避免使用自动添加的环境变量。这些名称的前缀无论如何都是服务的名称(大写),因此您已将其绑定到服务名称的知识上。最好使用环境变量在部署配置中执行此操作,而不是硬连线到代码中。自动添加的环境变量的另一个问题是,如果在前端之后创建数据库,则不会初始设置它们。所以最好避免它们。它们是在docker中链接容器的遗产,它们从来就不是那么好的做事方式。

答案 1 :(得分:0)

如果您从广告连播终端中使用printenv检查环境,则会看到automatically added variables。因此,假设您的Postgres服务被称为POSTGRES,您可以使用环境变量POSTGRES_SERVICE_HOST访问您的数据库。