【问题标题】:How can I connect to docker Postgres server from PGAdmin4如何从 PGAdmin4 连接到 docker Postgres 服务器
【发布时间】:2021-06-11 16:04:53
【问题描述】:

我是 Docker 容器的新手,但对 Postgres 并不陌生(我过去曾深入研究过)。

问题是我正在尝试连接到从以下 Docker 容器 dpage/pgadmin4 启动的 Postgres 服务器

问题是我无法使用 PGAdmin4 连接到服务器。 我收到以下错误:

could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Address not available
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?

我有以下 yaml 文件:

version: '3'

services:
  db:
    image: postgres
    restart: always
    ports:
      - "5432:5432"
    environment:
      POSTGRES_DB: postgres
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: parola
      PGDATA: /var/lib/postgresql/data/pgdata
      
  pgadmin4:
    image: dpage/pgadmin4
    ports:
      - "5050:80"
    environment:
      PGADMIN_DEFAULT_EMAIL: user@domain.com
      PGADMIN_DEFAULT_PASSWORD: parola

使用psql命令行我只有设置-h 0.0.0.0才能连接到它,如下:

psql -h 0.0.0.0 -U postgres

谁能告诉我我需要在 yaml 文件中设置什么或如何配置以允许从 localhost/127.0.0.1 连接?

我在 Ubuntu 20.04.2、AMD64 和 Docker 版本 20.10.7 上运行,构建 f0df350。

【问题讨论】:

    标签: postgresql docker ubuntu docker-compose pgadmin-4


    【解决方案1】:

    服务 pgadmin4 无法访问服务 db,因为在端口 5432 的 pgadmin4 内部不会有任何服务在运行

    使用此配置,您只需将数据库映射到主机的 5432 端口。这就是为什么您能够在您的机器(主机)中运行psql -h 0.0.0.0 -U postgres

    According to docker-composepgadmin4可以使用主机名db访问数据库

    您可以将配置与一些附加配置链接,如下所示

    version: '3'
    
    services:
      db:
        image: postgres
        restart: always
        ports:
          - "5432"
        environment:
          POSTGRES_DB: postgres
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: parola
          PGDATA: /var/lib/postgresql/data/pgdata
    
      pgadmin4:
        image: dpage/pgadmin4
        ports:
          - "5050:80"
        environment:
          PGADMIN_DEFAULT_EMAIL: user@domain.com
          PGADMIN_DEFAULT_PASSWORD: parola
        volumes:
        - ./servers.json:/pgadmin4/servers.json
    
    

    add a file called servers.json 与 docker-compose 在同一目录中,并使用以下 contents。请注意,我已将主机添加为db

    {
      "Servers": {
        "1": {
          "Name": "local db",
          "Group": "Server Group 1",
          "Port": 5432,
          "Username": "postgres",
          "Host": "db",
          "SSLMode": "prefer",
          "MaintenanceDB": "postgres"
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-05-05
      • 2021-06-14
      • 1970-01-01
      • 1970-01-01
      • 2015-08-26
      • 1970-01-01
      • 2020-06-13
      • 2016-07-20
      • 1970-01-01
      相关资源
      最近更新 更多