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

微服务无法连接Docker部署的PostgreSQL,连接被拒绝问题排查

排查与解决建议
  • PostgreSQL未就绪就发起连接:depends_on仅保证容器启动顺序,不代表PostgreSQL服务已完成初始化可接收连接。解决办法:

    • 给order-service添加启动延迟,比如在command中加入sleep 10 && java -jar xxx.jar;
    • 在Spring配置中开启连接重试,配置Hikari连接池参数:
      spring.datasource.hikari.connection-timeout=30000
      spring.datasource.hikari.connection-test-query=SELECT 1
      
    • 使用wait-for-it脚本检测PostgreSQL端口连通后再启动服务,需在order-service的command或Dockerfile中集成。
  • PostgreSQL监听地址受限:默认PostgreSQL可能仅监听localhost,容器内需允许所有地址访问。解决办法:

    • 在PostgreSQL的docker-compose环境变量中添加POSTGRES_HOST_AUTH_METHOD=trust(仅测试环境使用,生产需配置密码验证);
    • 挂载自定义postgresql.conf文件,设置listen_addresses = '*',同时修改pg_hba.conf添加规则:host all all 0.0.0.0/0 scram-sha-256(对应用户密码加密方式)。
  • 容器内PostgreSQL端口未正确生效:虽配置了command: -p 5431,需确认PostgreSQL实际监听端口。可以:

    • 查看容器日志:docker logs postgres-order,确认是否有listening on IPv4 address "0.0.0.0", port 5431的日志;
    • 进入容器测试本地连接:docker exec -it postgres-order psql -U matvey -d order-service -p 5431,若连接失败,可将command改为postgres -p 5431尝试。
  • Docker网络隔离问题:确认两个容器处于同一Docker网络。默认docker-compose会创建默认网络,但若有自定义网络配置,需确保postgres-order和order-service加入了同一个网络。可通过docker inspect postgres-order和docker inspect order-service查看网络信息,对比网络名称是否一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 05:45:45