Docker Compose启动时出现ECONNREFUSED 0.0.0.0:5432连接错误怎么办?
问题根因
最核心的原因是Node.js应用内的数据库连接地址配置错误:
- 你当前在应用代码中配置的数据库Host为
0.0.0.0,该地址在容器网络内指代的是当前应用容器自身的网络接口,而不是Postgres数据库容器的地址,自然会触发ECONNREFUSED连接拒绝报错。 - Docker Compose同一自定义网络下的容器默认支持服务名域名解析,你配置中数据库服务的名称为
database,这才是应用容器可以正确解析到的数据库地址。 - 你配置的
0.0.0.0:5432端口映射仅作用于宿主机到数据库容器的访问,不适用容器内部的互相通信。
错误截图如下:
解决步骤
- 修改Node.js应用中的数据库连接配置,将Host参数从
0.0.0.0替换为database,端口保持5432不变,用户名、密码、数据库名对应你配置的postgres即可。 - 如果你需要在宿主机本地直接运行Node.js应用(不放在容器内)进行开发,才需要在本地环境的配置中使用
127.0.0.1/0.0.0.0作为数据库Host。 - 修改完成后执行以下命令重启服务验证:
# 不需要清空已有数据库数据的话可以去掉-v参数 docker compose down -v docker compose up --build
内容的提问来源于stack exchange,提问作者Brett
相关产品推荐
相关产品推荐

