我的Postgres DB在Docker容器中运行。当启动容器时,它表示已准备好收听5432。
我的应用程序容器设置为依赖它。
container_name: my_postgres_db
image: library/postgres:latest
network_mode: bridge
expose:
- 5432
ports:
- 5432:5432
environment:
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=admin
- POSTGRES_DB=localdb
restart: always
应用程序的配置: container_name: my_test_app
depends_on:
- db
build:
context: ./
dockerfile: Dockerfile
image: my_test_app
ports:
- 8080:8080
基于对类似问题的解决方案,我将数据库URL中的localhost
更改为:spring.datasource.url=jdbc:postgresql://db:5432/localdb
这将导致另一个错误=“未知主机异常”。即使我设法以这种方式构建应用程序,也仍然无法正常工作。日志说,Connection to localhost:5432 refused
我还想念什么?当我明显将其更改为
localhost:5432
并gradlew清理/构建它时,为什么它仍在听db:5432
? 最佳答案
只需将postgres和app中的network_mode
更改为host
network_mode: host
请注意,这将忽略暴露选项,并将使用主机网络和容器网络关于postgresql - Docker-compose无法连接到Docker postgres容器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64088055/