我想使用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:
答案 0 :(得分:0)
它们应该能够通过它们的 container_name
相互通信,因为 docker-compose
为其服务创建了一个默认网络
我单独运行它们(不是 docker-compose 方式)但是,只要它们在同一个 docker-network
上,它们应该能够相互交谈:
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