连接位于外部的Docker PostgreSQL数据库(使用DBeaver)

12

我正在通过Docker-compose使用Airflow。同一docker-compose.yml文件中也有一个Postgres的镜像。配置如下:

  postgres:
    image: postgres:13
    ports:
      - 5432:5432
    environment:
      POSTGRES_USER: airflow
      POSTGRES_PASSWORD: airflow
      POSTGRES_DB: airflow
    volumes:
      - postgres-db-volume:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "airflow"]
      interval: 5s
      retries: 5
    restart: always

这对于Airflow来说是可以正常工作的,我也能够在UI上访问DAG。

但是我想要从外部SQL客户端应用程序(如Dbeaver)访问docker化的Postgres实例。但是我无法做到这一点。

IP地址

Postgres设置

有人能帮忙解决一下吗?

注意:我已经在本地运行了一个单独的Postgres实例。


也许尝试使用localhost而不是172.x。 - The Fool
本地主机也无法工作。 - sandeep
你无法连接到0.0.0.0:5432吗?如果端口冲突,你可以从postgres服务的ports中映射任何其他端口到5432。 - Jashwant
我也遇到了这个问题。此外,我无法像你一样将端口5432:5432添加到yaml文件中。它会返回一个错误,指出“此地址已在使用中”,但我没有任何其他使用此端口的东西。 - Prof.Plague
2个回答

10

在使用lsof -i:5432 | grep 'LISTEN'命令检查系统中是否已经使用了端口'5432'后,您应将IP地址'172.25.0.2'替换为'localhost'。

我更喜欢使用另一个端口,请参见下面的截图。

enter image description here


5

尝试多次后,如@Jashwant所提到的,该端口(5432)被占用。请注意,这个端口可能不会显示在lsof -i -P命令中。

因此我使用了另一个端口,而不是5432:5432,我使用了6543:5432,问题得到了解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接