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

Docker 如何从PgAdmin容器连接到Postgres容器,docker,docker-compose,containers,Docker,Docker Compose,Containers,我想部署2个容器,一个用于pgAdmin,一个用于带有docker compose的Postgres。容器创建正确,我可以在浏览器上登录到pgAdin,但当我尝试使用localhost:15432创建到Postgres的连接时,它不起作用,但如果我使用172.19.0.2:15432,它就起作用。有没有办法使用本地主机进行连接,或者为我的Postgres分配一个固定端口 version: '3.5' services: postgres: container_name: rn_po

我想部署2个容器,一个用于pgAdmin,一个用于带有docker compose的Postgres。容器创建正确,我可以在浏览器上登录到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:

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

我将分别运行它们(不是docker compose方式),但只要它们位于相同的
docker网络上
,它们就应该能够相互通信:

  • 获取容器名称
  • 创建docker网络,然后将容器附加到该网络
  • 然后在PGAdmin4的门户上:

  • 使用主机名rn_postgres连接怎么样?@Rolando Azevedo当您使用localhost:15432从pg_管理员连接到PostgreSQL容器时,它将路由到pg_管理员网络内的本地主机,而不是指向PostgreSQL网络。您可以使用$ifconfigusing hostname rn_postgres I have message“是在主机“rn_postgres”172.19.0.2”上运行并在端口15432上接受TCP/IP的操作系统的专用IP地址连接到PostgreSQL。如果重新启动时分配给Postgres的IP相同,则使用专用IP是一种解决方案。我想使用Pentaho容器来执行作业,其中使用了一个连接字符串,但我无法从中找到Postgres的IP。您似乎正在连接两个Postgres容器。到pgadmin容器的连接在哪里?我编辑了答案。现在它显示了连接到
    pg-net
    网络的
    postgress-demo
    pgadmin
    容器
    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
    
    docker network create pg-net
    
    docker network connect pg-net pgadmin
    docker network connect pg-net postgres-demo