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

本地Spring Boot项目无法连接Docker运行的PostgreSQL容器问题求助

问题根因

UnknownHostException: postgresqldb 报错的核心原因是:postgresqldb 是Docker Compose内部网络的服务域名,仅对同一个Docker Compose网络内的其他容器可解析,你本地直接运行的Spring Boot项目不在Docker网络中,无法识别这个主机名,所以解析失败。

解决方案

根据你的运行场景选择对应方案即可:

  • 场景1:Spring Boot项目直接在本地IDE/命令行运行
    修改application.properties中的数据库连接地址,将主机名替换为localhost即可,你已经在docker-compose中配置了5432端口的端口映射,本地端口的流量会自动转发到PostgreSQL容器中:
spring.datasource.url=jdbc:postgresql://localhost:5432/booksdb
  • 场景2:后续要将Spring Boot也打包为容器和PostgreSQL一起部署
    只需要在你的docker-compose.yml中添加Spring Boot服务的配置,两个服务同属一个Docker Compose网络时,就可以通过postgresqldb服务名互相访问,示例配置参考:
version: '3.1'
services:
  postgresqldb:
    image: postgres
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_DB=booksdb
  # 新增Spring Boot服务配置
  spring-boot-app:
    build: . # 这里指向你的Spring Boot项目Dockerfile所在路径
    ports:
      - "8081:8081"
    depends_on:
      - postgresqldb # 保证PostgreSQL先启动
    environment:
      SPRING_DATASOURCE_URL: jdbc:postgresql://postgresqldb:5432/booksdb
验证步骤

修改完配置后,可以先用本地数据库管理工具(比如DBeaver、Navicat)或者psql命令尝试连接localhost:5432的booksdb库,确认容器端口映射正常后再启动Spring Boot项目即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 13:09:03