我正在运行一个nodejs应用程序以及一个PostgreSQL数据库。目前,我通过以下环境变量从nodejs连接到数据库:POSTGRESQL_HOST
、POSTGRESQL_USER
、POSTGRESQL_PASSWORD
和POSTGRESQL_PORT
。POSTGRESQL_USER
和POSTGRESQL_PASSWORD
映射到正确的“秘密”。端口是静态的,所以它不会改变。我遇到的问题是主人的问题。目前,我已经在PostgreSQL中手动输入了POSTGRESQL_HOST
的IP地址,但是每次重新部署实例时,都会发生变化。连接到数据库的正确方法是什么?
发布于 2017-11-11 19:38:19
在部署配置的环境变量中设置POSTGRESQL_HOST
时,将其设置为PostgreSQL数据库服务的名称,而不是IP。服务的名称作为主机名添加到内部DNS服务器中,并将其映射到适当的IP。因此,当服务名称用作主机名时,事情将自动解决。
FWIW,我个人将避免使用自动添加的环境变量。无论如何,这些名称的前缀是服务的名称(大写),因此您已经将其绑定到服务名称的知识中。最好在部署配置中使用环境变量,而不是硬连接到代码中。自动添加的环境变量的另一个问题是,如果数据库是在前端之后创建的,则最初不会设置这些变量。所以最好避开他们。它们是将集装箱连接在码头上的遗留物,它们从来都不是一种很好的方式。
发布于 2017-11-11 12:02:19
如果您使用printenv
从吊舱的终端检查您的环境,您应该可以看到自动添加变量。因此,假设您的Postgres服务称为POSTGRES
,您可以使用环境变量POSTGRES_SERVICE_HOST
访问数据库。
https://stackoverflow.com/questions/47237102
复制相似问题