【问题标题】:How to connect from PgAdmin container to Postgres container如何从 PgAdmin 容器连接到 Postgres 容器
【发布时间】:2020-02-27 17:33:01
【问题描述】:

我想使用 docker-compose 部署 2 个容器,一个用于 pgAdmin,一个用于 Postgres。容器已正确创建,我可以在浏览器上登录 pgAdin,但是当我尝试创建与 Postgres 的连接时,使用 localhost:15432 它不起作用,但如果我使用 172.19.0.2:15432 它可以工作。有没有办法使用 localhost 进行连接或为我的 Postgres 分配一个固定端口?

version: '3.5'

services:
  postgres:
    container_name: rn_postgres
    image: postgres
    hostname: postgres
    ports:
      - "15432:5432"
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: rn2020
      POSTGRES_DB: rnmonitor
    volumes:
      - postgres-data:/var/lib/postgresql/data
    restart: unless-stopped
  pgadmin:
    container_name: rn_pgadmin
    image: dpage/pgadmin4
    depends_on:
      - postgres
    ports:
      - "5555:80"
    volumes:
      - pgadmin:/root/.pgadmin
    environment:
      PGADMIN_DEFAULT_EMAIL: pgadmin4@pgadmin.org
      PGADMIN_DEFAULT_PASSWORD: admin
    restart: unless-stopped
volumes:
  pgadmin:
  postgres-data:

【问题讨论】:

  • 使用主机名 rn_postgres 连接怎么样?
  • @Rolando Azevedo 当您使用 localhost:15432 从 pg_admin 连接到 PostgreSQL 容器时,它将路由到 pg_admin 网络内的 localhost,而不是指向 PostgreSQL 网络。您可以使用可以使用 $ ifconfig 获得的操作系统的私有 IP 地址连接到您的 PostgreSQL
  • 使用主机名 rn_postgres 我有消息“是在主机 "rn_postgres "172.19.0.2" 上运行并在端口 15432 上接受 TCP/IP 的服务器。如果分配给 Postgres 的 IP,则使用私有 IP 是一种解决方案任何时候重启都是一样的。我想使用 Pentaho 容器来执行作业,并在其中使用连接字符串,但我无法从那里找到 Postgres 的 IP。

标签: docker docker-compose containers


【解决方案1】:

他们应该能够通过container_name 相互通信,因为docker-compose 为其服务创建了一个默认网络

我正在单独运行它们(不是 docker-compose 方式),但只要它们在同一个 docker-network 上,它们应该能够相互交谈:

  1. 获取容器名称
docker ps

IMAGE                PORTS                         **NAMES**
dpage/pgadmin4      0.0.0.0:80->80/tcp, 443/tcp   pgadmin
postgres            0.0.0.0:5432->5432/tcp        postgres-demo
  1. 创建一个 docker 网络,然后将容器附加到它
docker network create pg-net

docker network connect pg-net pgadmin
docker network connect pg-net postgres-demo
  1. 然后在 PGAdmin4 的门户上:

【讨论】:

  • 您似乎正在连接 2 个 postgres 容器。 pgadmin 容器的连接在哪里?
  • 我编辑了答案。它现在显示 postgress-demopgadmin 容器被附加到 pg-net 网络
猜你喜欢
  • 1970-01-01
  • 2016-07-20
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
  • 2020-11-20
  • 1970-01-01
相关资源
最近更新 更多