pgadmin4无法连接到我的postgres数据库

时间:2019-12-21 01:01:09

标签: postgresql docker-compose pgadmin-4

这是我的docker-compose.yml文件:

version: "3.5"
services:
  db:
    image: myapp
    container_name: my-database
    environment:
      POSTGRES_USER: myuser
      POSTGRES_PASSWORD: mypasswd
      POSTGRES_DB: mydb
    expose:
      - "5432"
    ports:
      - 8000:5432
    volumes:
      - /path/to/my/migrationsV1_0__audit_table.sql
      - //path/to/my/migrations/V1_1__tables.sql
  pgadmin:
    image: dpage/pgadmin4
    ports:
      - 5454:5454/tcp
    environment:
      - PGADMIN_DEFAULT_EMAIL=admin@mydomain.com
      - PGADMIN_DEFAULT_PASSWORD=postgres
      - PGADMIN_LISTEN_PORT=5454

然后我$ docker inspect xxxxxxxx | grep "IPAddress"

它产生输出:

    "SecondaryIPAddresses": null,
    "IPAddress": "172.17.0.2",
            "IPAddress": "172.17.0.2",

在docker-compose之后,我向pgadmin输入值:

Image result

但是pgadmin给出了错误:

无法连接到服务器

超时到期。

这是怎么了?

3 个答案:

答案 0 :(得分:0)

在您的配置中,PostgreSQL数据库具有5432端口(默认值)。 您确定在这一行吗?

    $this->db->where('hospital_id', $this->hospital_id);
    $expenses = $this->db->get('expense')->result();
    foreach ($expenses as $expense) {
        if (date('m/y', $expense->date) == date('m/y', time())) {
            $this_month_expense[] = $expense->amount;
        }
    }

尝试将其替换为

PGADMIN_LISTEN_PORT=5454

答案 1 :(得分:0)

要解决此问题,只需使用-user = root 运行容器(在docker-compose中使用 user:root

答案 2 :(得分:0)

您需要使用Postgres容器的网关地址。使用docker inspect xxxxxxxx | grep Gateway来获取它。我想您的情况应该是172.17.0.1