如何从PgAdmin容器连接到Postgres容器

时间:2020-02-27 17:33:01

标签: docker docker-compose containers

我想使用docker-compose为pgAdmin部署2个容器,为Postgres部署1个容器。容器创建正确,我可以在浏览器上登录pgAdin,但是当我尝试使用localhost:15432创建与Postgres的连接时,它不起作用,但是如果我使用172.19.0.2:15432,则可以。有没有办法使用本地主机进行连接或为我的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:

1 个答案:

答案 0 :(得分:0)

它们应该能够通过它们的 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 的门户上:

enter image description here