当前位置: 首页 > 知识库问答 >
问题:

只能将pgadmin连接到端口5432上的postgres docker容器,而不能连接到任何其他端口?

黄飞翮
2023-03-14

我正在尝试将PGAdmin连接到docker容器,并发现这篇文章(https://stackoverflow.com/a/57729412/11923025)对此非常有用。但我试过使用5432以外的端口进行测试,但没有任何运气。

例如,我尝试在我的docker-compose文件中使用5434,并尝试在pgadmin中使用该端口,但得到以下错误(这是使用docker inspect找到的IP地址)

这就是我的docker-compose文件的样子(我故意为'expose'和'ports'使用不同的端口,试图缩小哪一个端口允许我通过PGAdmin连接,但我没有运气

database:
    image: postgres:10.4-alpine
    container_name: kafka-nodejs-example-database
    environment:
      POSTGRES_USER: "abcdef"
      POSTGRES_PASSWORD: "abcdef"
    expose:
      - "5435"
    ports:
      - 8000:5434
pgadmin:
    image: dpage/pgadmin4
    ports:
      - 5454:5454/tcp
    environment:
      - PGADMIN_DEFAULT_EMAIL=admin@mydomain.com
      - PGADMIN_DEFAULT_PASSWORD=postgres
      - PGADMIN_LISTEN_PORT=5454

为什么pgadmin对5432没有问题,但当我要求它使用另一个端口时,它会抛出这个错误?

我应该注意,上面的屏幕截图中的错误是由于试图将postgres容器连接到pgadmin容器。我还尝试连接到pgadmin的本地应用程序中的postgres容器,并在下面得到一个不同的超时错误。我甚至在尝试使用本地pgadmin副本连接端口5432时也会遇到同样的错误。

共有1个答案

昌乐生
2023-03-14

您公开了容器的端口5434,但PostgreSQL本身仍然配置为侦听端口5432。这就是为什么你不能到达数据库。

运行initdb之后和启动PostgreSQL之前,配置集群,例如使用

echo 'port = 5434' >> datadir/postgresql.auto.conf

但不需要在不同的端口上启动PostgreSQL。只需将端口5432映射到5434即可。

 类似资料:
  • 我在运行Ubuntu服务器14.04的服务器上安装了PostgreSQL 9.3。 在服务器上运行时,我得到(我猜是相关部分):

  • PostgreSQL出现错误: 和文件是正常的(参见下面)。 服务器正在运行 我的文件:

  • 问题内容: 我有一个kubernetes单节点设置(请参阅https://coreos.com/kubernetes/docs/latest/kubernetes- on-vagrant-single.html ) 我有一个服务和一个创建吊舱的复制控制器。这些Pod需要连接到同一服务中的其他Pod(注意:这最终是使我可以使mongo运行带有副本集(非localhost),但是此简单示例演示了mon

  • 问题内容: 我正在尝试制作一个程序,将某个质量和体积的密度与化合物的密度列表进行比较,然后返回我正在分析的化合物的类型。 这是返回错误的代码部分: 错误信息: 问题答案: 您对此有一些选择 使用和相同 或者,您也可以将它们转换为当您以这种方式执行时,您可以保留值,就好像您要进行更多的计算一样,而不必一遍又一遍地来回转换它们。

  • 我有一个swarm集群,我在其中创建了一个全局服务,在集群中的所有docker主机上运行。 目标是让此服务的每个容器实例连接到侦听docker主机上的端口。 有关详细信息,我将遵循此Docker守护进程指标指南,以在所有主机上公开新的docker指标API,然后将该主机端口代理到覆盖网络中,以便Prometheus可以从所有群主机中抓取指标。 我已经阅读了多个docker github问题#839

  • 相关帖子:1)docker postgres pgadmin本地连接 2)https://coderwall.com/p/qsr3yq/postgresql-with-docker-on-os-x(在示例中没有填写“name”条目) 有两种方法来完成这个任务,我使用正式的postgres 方法一: 并使用 然后使用pgAdmin选项卡属性填充信息连接