node.js – 在具有dockers的nodeJS上用于Postgres的ECONNREFUSE
我正在使用postgresql构建在NodeJS上运行的应用程序. 当我运行码头 – 组成
和nodejs服务器.
如果我尝试运行服务器而不使用容器(在我的机器上有真正的nodejs和postgresd)它是有效的. 但我希望它与容??器正常工作.我不明白我在做错什么 这里是docker-compose.yml文件
有人可以帮我吗 (有人喜欢docker :)) 最佳答案
您的DATABASE_URL是指127.0.0.1,它是loopback adapter(更多here).这意味着“连接到我自己”.
在同一主机上运行两个应用程序(不使用Docker)时,它们在同一适配器(也称为localhost)上都可寻址. 当在容器中运行这两个应用程序时,它们不像以前那样在localhost上.相反,您需要将Web容器指向docker0适配器上的数据库容器的IP地址 – 该Docker-compose为您设置. 更改:
至
这通过Docker链接起作用:Web容器有一个文件(/ etc / hosts),一个db条目指向数据库容器所在的IP.这是系统(在这种情况下,容器)中尝试解析主机名时将首先看到的位置. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |