You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器中Spring Boot应用无法连接PostgreSQL容器数据库

解决Docker容器中Spring Boot无法连接PostgreSQL的问题

问题根源在于容器网络的访问逻辑:Spring Boot容器内的localhost指向容器自身,而非宿主机,你配置的jdbc:postgresql://localhost:5050/security-db会尝试连接Spring Boot容器自己的5050端口,自然找不到PostgreSQL服务。

修复方案(推荐):使用Docker Compose服务名作为数据库主机名

Docker Compose会自动为同一配置下的服务创建共享网络,且可以通过服务名直接访问其他容器。只需修改application.properties中的数据库连接URL:

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
# 将localhost:5050替换为db:5432(db是docker-compose.yml中PostgreSQL服务的名称,5432是容器内部默认端口)
spring.datasource.url=jdbc:postgresql://db:5432/security-db
spring.datasource.username=scrty
spring.datasource.password=scrty123
spring.jpa.hibernate.ddl-auto=update

关键说明:

  • 容器间通信不需要依赖宿主机的端口映射(5050:5432),该映射仅用于宿主机外部访问数据库,容器内部直接用PostgreSQL默认端口5432即可。
  • 确保Spring Boot应用通过docker-compose up启动(需在docker-compose.yml中添加Spring Boot服务配置),这样它会自动加入与db服务相同的网络,才能通过服务名访问。

备选方案(不推荐,移植性差):使用宿主机IP地址

如果必须通过宿主机端口访问,可将localhost替换为宿主机的实际IP地址(如192.168.1.100),但该方式在不同环境下需修改IP,灵活性差。

内容的提问来源于stack exchange,提问作者demirs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 05:52:11