【问题标题】:How to use docker to spin up postgres database如何使用 docker 启动 postgres 数据库
【发布时间】:2016-03-11 02:14:27
【问题描述】:

我正在尝试让我的应用程序代码与我的 postgres 数据库通信,每个数据库都在单独的容器中运行。但是,每当我尝试访问我的数据库时,我都会不断收到 "dial tcp 172.19.0.3:5432: getsockopt: connection denied",我理解这意味着端口 5432 上没有任何监听。但我不明白这是怎么回事,因为 docker 没有报告启动我的应用服务器或 postgres 服务器的错误。

version: '2'
services:
  postgres:
    restart: 'no'
    image: mhatch/eventcliq_pgdb
    volumes_from:
     - data
    ports:
     - "5432"
    environment:
     - POSTGRES_PASSWORD=TEST_PG_PWD

 data:
  restart: 'no'
  image: postgres:9.5.1
  volumes:
    - /var/lib/postgresql
    - /etc/postgresql
    - /var/log/postgresql
  command: "true"

  api:
    restart: 'no'
    build: .
    environment:
      - ENV=dev
    image: mhatch/eventcliq-api
    ports:
      - "80:3001"
    links:
      - postgres:db

]4

注意:尝试连接到 0.0.0.0:32793 时会出现 pgAdmin 错误。 x'd 连接到另一个已保存且正在工作的服务器(我没有尝试连接到该服务器)。

【问题讨论】:

    标签: postgresql tcp docker docker-compose


    【解决方案1】:

    发布您的 docker-compose 文件将有助于更好地回答您的问题。不过,我可以尝试查看您的屏幕截图。

    在您的 docker-compose 文件中,将端口条目 - 5432 或 - 5432:5432 更改为

    ports:
      - "127.0.0.1:5432:5432"
    

    试一试。问题似乎在于 IPv6 与 IPv4。通过此更改,您应该能够连接到 postgres。

    【讨论】:

    • 感谢您的回复,但我不认为我想硬编码端口映射。
    • 这不是硬编码端口映射。 127.0.0.1 只是本地主机。如果不提供,docker 的网络接口会将其视为 IPV6 地址,因此将无法找到服务。
    【解决方案2】:

    我决定在另一台计算机上测试我的原始设置,一切似乎都正常。看来我最初的问题仅限于我的桌面,我可能需要在该机器上解决一些网络配置问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      相关资源
      最近更新 更多