我正在运行一个nodejs应用程序和一个PostgreSQL数据库。目前,我借助以下环境变量从nodejs连接到数据库:POSTGRESQL_HOST
,POSTGRESQL_USER
,POSTGRESQL_PASSWORD
和POSTGRESQL_PORT
。 POSTGRESQL_USER
和POSTGRESQL_PASSWORD
被映射到正确的秘密'。端口是静态的,所以它永远不会改变。我遇到的问题是主机。目前,我已在POSTGRESQL_HOST
中手动输入PostgreSQL pod的IP地址,但每次重新部署实例时都会更改。连接数据库的正确方法是什么?
答案 0 :(得分:3)
在部署配置的环境变量中设置POSTGRESQL_HOST
时,将其设置为PostgreSQL数据库服务的名称,而不是IP。服务名称作为主机名添加到内部DNS服务器中,并映射到适当的IP。因此,当服务名称用作主机名时,事情将自动解决。
FWIW,我个人会避免使用自动添加的环境变量。这些名称的前缀无论如何都是服务的名称(大写),因此您已将其绑定到服务名称的知识上。最好使用环境变量在部署配置中执行此操作,而不是硬连线到代码中。自动添加的环境变量的另一个问题是,如果在前端之后创建数据库,则不会初始设置它们。所以最好避免它们。它们是在docker中链接容器的遗产,它们从来就不是那么好的做事方式。
答案 1 :(得分:0)
如果您从广告连播终端中使用printenv
检查环境,则会看到automatically added variables。因此,假设您的Postgres服务被称为POSTGRES
,您可以使用环境变量POSTGRES_SERVICE_HOST
访问您的数据库。