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
相关产品推荐
相关产品推荐

