gpt4 book ai didi

node.js - 错误:连接ECONNREFUSED 127.0.0.1:5432 docker-compose up

转载 作者:行者123 更新时间:2023-12-02 19:00:35 36 4
gpt4 key购买 nike

不知道为什么会收到SequelizeConnectionRefusedError。我确认可以在本地运行所有docker镜像,但是当我尝试运行docker-compose up命令时,我遇到了错误:连接ECONNREFUSED 127.0.0.1:5432。 enter image description here

最佳答案

根据我对您问题的理解,以下是我的假设:

  • 您正在使用MacOS
  • 您的Postgres服务器在主机操作系统中运行,而不是在另一个Docker容器中运行。

  • 话虽如此,这是MacOS用户的一个常见问题,他们希望将其Docker容器连接到主机上运行的Postgres服务器。由于它们不在同一个网络中,因此您的容器无法到达Postgres服务器,因此,绝对无法通过 127.0.0.1:5432连接到它。

    在Linux机器中,通过添加 network_mode: host来解决问题将是微不足道的,这样容器将与主机在同一网络中运行,从而能够访问Postgres服务器。但是,由于在Mac上实现了Docker,而Docker主机实际上是在MacOS顶部的隐藏VM中运行的,因此此解决方案在这里不起作用。

    一些建议:
  • 迁移Postgres服务器以使其在docker容器中运行(如果需要,请在同一docker-compose文件中运行)。您始终可以进行端口映射,以便从Postbird中访问它。
  • 或者,如果您仍然坚持在MacOS上本地运行它,这是workaround,它涉及在同一docker网络中创建另一个docker容器并执行还原SSH隧道。

  • 以下是将Postgres服务器迁移到使用Docker容器的步骤
  • 使用新的数据库服务更新docker-compose:
  • db:
    image: postgres:10.5-alpine
    environment:
    POSTGRES_USER: $UDAGRAM_USERNAME
    POSTGRES_PASSWORD: $UDAGRAM_PASSWORD
    POSTGRES_DB: $UDAGRAM_DATABASE
    ports:
    - 35432:5432
    volumes:
    - <path where you want to persist your database data>:/var/lib/postgresql/data
  • 现在,您可以使用localhost:35432
  • 上的Postbird连接到新的postgres

    编辑1

    如果您在AWS RDS中运行Postgres实例,则无需进行以上更改,但请执行其他步骤:
  • 确保您的网络可以通过端口5432到达RDS端点。此处的最佳实践是更新安全组入站规则,以仅允许来自您的IP地址的端口5432(如何执行此操作不在此答案的范围内)但可以从AWS文档中轻松找到)
  • UDAGRAM_HOST的值更新为可以在AWS RDS控制台中找到的RDS终结点。
  • 关于node.js - 错误:连接ECONNREFUSED 127.0.0.1:5432 docker-compose up,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60732321/

    36 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com