Spring Boot无法连接Docker中的PostgreSQL数据库求助
解决Spring Boot无法连接Docker中PostgreSQL的问题
核心问题分析
Docker Compose默认会为创建的服务生成独立内部网络,服务间可通过服务名(比如db)互相访问,但本地运行的Spring Boot应用不在这个内部网络内,无法解析db主机名——这也是Docker日志里看不到登录尝试的原因:请求根本没到达PostgreSQL容器。
解决方案
1. 修改Spring Boot数据库连接地址
将application.properties中的数据库URL替换成本地映射地址:
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres spring.datasource.username=postgres spring.datasource.password=admin spring.datasource.driver-class-name=org.postgresql.Driver
你的docker-compose.yml已将容器5432端口映射到本地5432端口,本地应用通过localhost:5432即可访问Docker内的PostgreSQL。
2. 验证容器运行状态
- 执行
docker ps确认PostgreSQL容器处于Up状态 - 执行
docker logs <你的postgres容器ID>,查看日志中是否出现database system is ready to accept connections类信息,确认容器已正常启动
3. 检查端口占用情况
若修改URL后仍无法连接,检查本地5432端口是否被其他程序占用:
- Windows:
netstat -ano | findstr :5432 - Linux/Mac:
lsof -i :5432
若端口被占用,可停止占用程序,或修改docker-compose.yml端口映射为其他端口(比如5433:5432),同时更新Spring Boot的URL为localhost:5433
内容的提问来源于stack exchange,提问作者Kallydi
相关产品推荐
相关产品推荐

