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

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端口监听:
    lsof -i :5433
    
    若无输出,说明服务未在该端口运行,需确认启动的PostgreSQL实例对应的端口配置。
  • 修改监听配置:
    找到当前运行实例对应的postgresql.conf文件,确保:
    listen_addresses = '*'  # 允许所有IP访问
    port = 5433             # 确认端口为5433
    
  • 配置访问权限:
    打开对应实例的pg_hba.conf,添加允许Docker容器网段(或所有IP)的访问规则:
    host    all             all             0.0.0.0/0               scram-sha-256
    
    修改后重启PostgreSQL服务。

二、两个postgresql.conf文件的处理

这两个路径说明你可能通过两种方式安装了PostgreSQL:

  • /usr/local/var/postgres:通常是Homebrew安装的实例路径
  • /Library/PostgreSQL/14/data:通常是官方安装包的实例路径

二者是独立的PostgreSQL实例,配置文件无需同步,建议按以下步骤处理:

  1. 确认哪个实例正在运行:
    ps aux | grep postgres
    
    通过进程的启动路径判断运行的实例。
  2. 停用/卸载无用实例:
    • Homebrew安装的实例:用brew services stop postgresql停止服务,无需保留则执行brew uninstall postgresql
    • 官方安装包的实例:通过系统偏好设置的PostgreSQL图标停止服务,或执行pg_ctl -D /Library/PostgreSQL/14/data stop,无需保留则卸载对应安装包
  3. 统一使用一个实例,后续操作均针对该实例的配置文件修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:57:21