Docker 容器从 docker-compose 中的 postgres 容器获取连接被拒绝
Docker container getting connection refused from postgres container in docker-compose
几天来我一直在为此苦苦思索,在尝试自己从各地寻找解决方案后,我终于寻求帮助。
我有一个 docker-compose 文件,如下所示:
services:
db:
image: ...
container_name: db
ports:
- "8095:5432"
networks:
- mynetwork
springservice:
image: ...
container_name: springservice
depends_on:
- db
ports:
- "8090:8090"
networks:
- mynetwork
environment:
- SPRING_DATASOURCE_URL: jdbc:postgresql://db:8095/dbname
- SPRING_DATASOURCE_USER: user
- SPRING_DATASOURCE_PASSWORD: password
networks:
mynetwork:
driver: bridge
name: mynetwork
Postgres 必须放到另一个端口,因为我们在那个 compose 中有 3 个 postgres 容器,所以每个容器都有自己的端口。
Postgres 的 listen_address 设置为“*”。
pg_hba 设置为“host all 0.0.0.0/0 md5”
两个容器都出现了,但是当我从服务容器 curl 到 http://db:8095/ 时,连接被拒绝。
我在这里错过了什么?
您的端口映射在 docker 网络中没有意义。这只是到主机系统的映射。在网络内部,容器在其 本地端口 .
上始终可用
- SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/dbname
另请注意,您无需发布端口即可从网络内部访问它。对数据库这样做可能会带来安全风险。如果可以,则不应发布它。这样,它只能从 docker 网络内部访问。
几天来我一直在为此苦苦思索,在尝试自己从各地寻找解决方案后,我终于寻求帮助。
我有一个 docker-compose 文件,如下所示:
services:
db:
image: ...
container_name: db
ports:
- "8095:5432"
networks:
- mynetwork
springservice:
image: ...
container_name: springservice
depends_on:
- db
ports:
- "8090:8090"
networks:
- mynetwork
environment:
- SPRING_DATASOURCE_URL: jdbc:postgresql://db:8095/dbname
- SPRING_DATASOURCE_USER: user
- SPRING_DATASOURCE_PASSWORD: password
networks:
mynetwork:
driver: bridge
name: mynetwork
Postgres 必须放到另一个端口,因为我们在那个 compose 中有 3 个 postgres 容器,所以每个容器都有自己的端口。
Postgres 的 listen_address 设置为“*”。 pg_hba 设置为“host all 0.0.0.0/0 md5”
两个容器都出现了,但是当我从服务容器 curl 到 http://db:8095/ 时,连接被拒绝。
我在这里错过了什么?
您的端口映射在 docker 网络中没有意义。这只是到主机系统的映射。在网络内部,容器在其 本地端口 .
上始终可用 - SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/dbname
另请注意,您无需发布端口即可从网络内部访问它。对数据库这样做可能会带来安全风险。如果可以,则不应发布它。这样,它只能从 docker 网络内部访问。