在Docker容器中使用GUI连接到PostgreSQL

3

我刚开始学习Docker,决定创建一个PostgreSQL容器,并将其用作我的数据库。

但问题是,每次我尝试使用我的GUI(PostBird)连接到我的PostgreSQL容器时,都会出现一个错误,显示“连接意外终止”。

我的配置文件:

postgres:
  image: postgres:alpine
  restart: always
  ports:
    - '3000:3000'
  environment:
    POSTGRES_USER: root
    POSTGRES_PASSWORD: root
    POSTGRES_DB: adonisvue
  volumes:
    - ./init:/docker-entrypoint-initdb.d/

我使用的命令是:
sudo docker-compose up

当我的postgres容器正在运行时,它会显示“数据库系统已准备好接受连接”,但我无法使用我的GUI连接,即使使用连接URL也不行。

我不得不将端口更改为3000,因为Docker说端口5432已经在使用中,但我没有任何容器在其中运行。这是因为psql吗?

对不起,我对此真的很陌生,我只有一堆问题 xD

1个回答

1
我不得不将端口更改为3000,因为Docker指出端口5432已被占用,但我没有在其中运行任何容器。这是因为psql吗?
是的,很可能是因为您在本地机器上使用了另一个postgresql实例,与此同时,运行在您容器内的postgres实例仍在使用端口5432(除非您还更改了容器内的端口,但我99.9%确定您没有这样做)。因此以下端口设置是错误的。
ports:
  - '3000:3000'

这是将主机上配置的任何IP的3000端口映射到容器的3000端口,且该端口上没有运行服务。请尝试:
ports:
  - '3000:5432'

您可以连接到本地机器上的端口3000上的postgres,该端口将转发数据包到容器内部的端口5432。


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