Docker 如何从PgAdmin容器连接到Postgres容器
我想部署2个容器,一个用于pgAdmin,一个用于带有docker compose的Postgres。容器创建正确,我可以在浏览器上登录到pgAdin,但当我尝试使用localhost:15432创建到Postgres的连接时,它不起作用,但如果我使用172.19.0.2:15432,它就起作用。有没有办法使用本地主机进行连接,或者为我的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
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网络上
,它们就应该能够相互通信:
使用主机名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