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

Oracle Cloud中Docker部署的PostgreSQL数据库无法连接求助

解决步骤

1. 修正PostgreSQL监听配置

PostgreSQL默认仅监听容器内部的localhost,外部无法访问,需修改为监听所有地址:

  • 在docker-compose.yml的environment字段中添加:
    POSTGRES_LISTEN_ADDRESSES: '*'
    
    或者挂载自定义postgresql.conf文件,将listen_addresses = '*'写入配置后,添加到volumes:
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
      - ./postgresql.conf:/var/lib/postgresql/data/postgresql.conf
    

2. 修正端口映射规则

从端口监听输出可知,docker-proxy监听的是54320,但PostgreSQL容器内部默认使用5432端口,需调整端口映射为外部端口映射到容器内的5432:

ports:
  - "54320:5432"

替换54320为你实际想使用的外部端口。

3. 验证容器内部服务状态

在Oracle Cloud主机上执行以下命令,确认PostgreSQL服务正常运行:

# 进入容器执行psql连接
docker exec -it <你的容器名称> psql -U nuxai -d nuxai
# 查看容器内PostgreSQL监听端口
docker exec -it <你的容器名称> ss -nlpt | grep postgres

若能正常连接且显示监听0.0.0.0:5432,则容器内部服务无问题。

4. 再次确认安全组与防火墙规则

  • Oracle Cloud控制台:检查安全组入站规则,确保允许你使用的外部端口的TCP流量,来源IP可临时设为0.0.0.0/0测试(生产环境需限制特定IP)。
  • 主机iptables:执行sudo iptables -L确认存在允许该端口的规则,或临时清空iptables测试:
    sudo iptables -F
    

5. 测试客户端连通性

在本地客户端执行以下命令,验证端口是否可达:

# 使用telnet测试
telnet 000.000.000.000 <你的外部端口>
# 或者使用nc测试
nc -zv 000.000.000.000 <你的外部端口>

若显示连接成功,再尝试用DataGrip和postgres.js重新连接。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 00:07:36