本站教程收集整理的这篇文章主要介绍了node.js – 在具有dockers的nodeJS上用于Postgres的ECONNREFUSED,本站教程本站觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用PostgreSQL构建在NodeJS上运行的应用程序.
我使用SequelizeJS作为ORm.
为了避免使用真正的POSTGRes守护进程并在我自己的设备上使用Nodej,我使用的是docker-compose的容器.
当我运行码头 – 组成
它启动pg数据库
database system is ready to accept connections
和nodejs服务器.
但服务器无法连接到数据库.
Error: connect ECONNREFUSED 127.0.01:5432
如果我尝试运行服务器而不使用容器(在我的机器上有真正的nodejs和POSTGResd)它是有效的.
但我希望它与容??器正常工作.我不明白我在做错什么
这里是docker-compose.yml文件
web:
image: node
command: npm start
ports:
- "8000:4242"
links:
- db
working_dir: /src
environment:
SEQ_DB: mydatabase
SEQ_USER: username
SEQ_PW: pgpassword
PORT: 4242
DATABASE_URL: POSTGRes://username:pgpassword@127.0.0.1:5432/mydatabase
volumes:
- ./:/src
db:
image: POSTGRes
ports:
- "5432:5432"
environment:
POSTGRES_USER: username
POSTGRES@R_673_3988@: pgpassword
有人可以帮我吗
(有人喜欢docker :))
最佳答案
您的DATABASE_URL是指127.0.0.1,它是loopBACk adapter(更多herE).这意味着“连接到我自己”.
在同一主机上运行两个应用程序(不使用Docker)时,它们在同一适配器(也称为localhost)上都可寻址.
当在容器中运行这两个应用程序时,它们不像以前那样在localhost上.相反,您需要将Web容器指向docker0适配器上的数据库容器的IP地址 – 该Docker-compose为您设置.
更改:
DATABASE_URL: POSTGRes://username:pgpassword@127.0.0.1:5432/mydatabase
至
DATABASE_URL: vps云服务器 POSTGRes://username:pgpassword@db:5432/mydatabase
这通过Docker链接起作用:Web容器有一个文件(/ etc / hosts),一个db条目指向数据库容器所在的IP.这是系统(在这种情况下,容器)中尝试解析主机名时将首先看到的位置.
本站总结
以上是本站教程为你收集整理的node.js – 在具有dockers的nodeJS上用于Postgres的ECONNREFUSED全部内容,希望文章能够帮你解决node.js – 在具有dockers的nodeJS上用于Postgres的ECONNREFUSED所遇到的程序开发问题。
如果觉得本站教程网站内容还不错,欢迎将本站教程推荐给好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。