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

远程VPS上Docker容器启动失败如何解决?Spring Boot连PostgreSQL报错

问题排查结论

java.net.NoRouteToHostException错误本质是VPS上的容器无法和目标PostgreSQL服务器postgresql.j5321585.myjino.ru:5432建立网络连接,本地运行正常说明应用配置本身没有问题,问题出在VPS侧的网络层面,可能的原因如下:

  • VPS本身的出口网络限制
    多数VPS厂商会默认封禁5432端口的对外出口流量,也可能是VPS自带的安全组/防火墙规则禁止了到外部5432端口的请求。可先在VPS宿主机执行telnet postgresql.j5321585.myjino.ru 5432或者nc -zv postgresql.j5321585.myjino.ru 5432验证宿主机本身能否连通该数据库端口,如果宿主机都连不通,先联系VPS厂商解除端口限制,或者开放本地防火墙的出口规则。
  • Docker容器的网络配置问题
    如果宿主机能连通数据库端口,但容器内连不通,大概率是Docker的DNS或者网络转发规则异常:
    1. 先进入容器验证网络:执行docker run --rm tg-bot ping postgresql.j5321585.myjino.ru看是否能正常解析域名,如果解析失败,给Docker配置公共DNS比如114.114.114.114或者8.8.8.8即可。
    2. 如果域名能解析但端口连不上,检查VPS上的iptables规则有没有禁止Docker网桥的流量转发,执行sysctl net.ipv4.ip_forward看返回值是不是1,如果是0则需要开启IP转发:执行sysctl -w net.ipv4.ip_forward=1,再将配置写入/etc/sysctl.conf实现永久生效。
  • 数据库侧的访问白名单限制
    你的PostgreSQL服务商可能只允许你本地IP访问,没有将VPS的公网IP加入数据库的访问白名单,可登录数据库后台将VPS公网IP添加到允许访问的列表中验证。
  • 域名解析污染
    部分地区的VPS可能存在域名解析污染的情况,导致postgresql.j5321585.myjino.ru解析到了错误的IP,你可以在VPS上执行nslookup postgresql.j5321585.myjino.ru,和本地电脑上解析出来的IP做对比,如果结果不一致,修改VPS的DNS服务器地址,或者直接在application.yml里把域名替换成数据库的公网IP地址测试即可。

内容的提问来源于stack exchange,提问作者Каляшов Григорий

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:24:05