Docker容器内Spring Boot应用无法连接Mac本地PostgreSQL求助
问题解决指南
一、Docker容器连接PostgreSQL失败的解决步骤
1. 修正连接字符串的主机地址
Docker容器内的localhost指向容器自身,而非你的Mac宿主机。在Mac环境下,替换为host.docker.internal即可直接访问宿主机服务:
jdbc:postgresql://host.docker.internal:5433/database1
若该地址无效,也可直接使用Mac的局域网IP(如192.168.x.x)。
2. 验证PostgreSQL的运行状态与端口配置
- 检查PostgreSQL是否在5433端口监听:
若无输出,说明服务未在该端口运行,需确认启动的PostgreSQL实例对应的端口配置。lsof -i :5433 - 修改监听配置:
找到当前运行实例对应的postgresql.conf文件,确保:listen_addresses = '*' # 允许所有IP访问 port = 5433 # 确认端口为5433 - 配置访问权限:
打开对应实例的pg_hba.conf,添加允许Docker容器网段(或所有IP)的访问规则:
修改后重启PostgreSQL服务。host all all 0.0.0.0/0 scram-sha-256
二、两个postgresql.conf文件的处理
这两个路径说明你可能通过两种方式安装了PostgreSQL:
/usr/local/var/postgres:通常是Homebrew安装的实例路径/Library/PostgreSQL/14/data:通常是官方安装包的实例路径
二者是独立的PostgreSQL实例,配置文件无需同步,建议按以下步骤处理:
- 确认哪个实例正在运行:
通过进程的启动路径判断运行的实例。ps aux | grep postgres - 停用/卸载无用实例:
- Homebrew安装的实例:用
brew services stop postgresql停止服务,无需保留则执行brew uninstall postgresql - 官方安装包的实例:通过系统偏好设置的PostgreSQL图标停止服务,或执行
pg_ctl -D /Library/PostgreSQL/14/data stop,无需保留则卸载对应安装包
- Homebrew安装的实例:用
- 统一使用一个实例,后续操作均针对该实例的配置文件修改。
内容的提问来源于stack exchange,提问作者Teletubbies
相关产品推荐
相关产品推荐

