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

本地运行的SpringBoot应用无法连接Docker部署的Redis报错求助

问题根因

你遇到的报错java.net.UnknownHostException: redis: nodename nor servname provided, or not known是典型的主机名解析失败问题:
你配置的spring.redis.host=redis这个主机名,只有当Spring Boot应用和Redis容器运行在同一个Docker网络下时,Docker内置的DNS服务才能将redis这个服务名解析为对应Redis容器的IP地址。但你当前Spring Boot是直接运行在本地宿主机上的,本地操作系统没有绑定redis主机名到对应IP的映射规则,自然无法解析。

本地运行Spring Boot对接Docker部署的Redis是完全可行的,按以下步骤调整即可:

解决步骤

  1. 确认Redis容器端口映射正确
    启动Redis容器时必须添加宿主机到容器的端口映射,正确启动命令参考:

    docker run -d -p 6379:6379 --name redis redis:latest
    

    确保-p 6379:6379参数已配置,将容器的6379端口映射到宿主机的6379端口。

  2. 修改Spring Boot配置
    将application.properties里的Redis主机地址改为宿主机本地地址:

    # 把原来的spring.redis.host=redis改成下面的配置
    spring.redis.host=localhost
    
  3. 异常排查(修改后仍无法连接时检查)

    • 执行docker ps确认Redis容器处于运行状态,没有异常退出
    • 本地执行redis-cli ping验证Redis服务可正常访问,正常会返回PONG
    • 如果你启动Redis时配置了访问密码,需要在配置文件中补充密码配置:
      spring.redis.password=你设置的Redis密码
      

补充说明

如果你后续将Spring Boot应用也打包为Docker镜像,和Redis容器统一用Docker Compose编排部署、放在同一个Docker网络下时,可以直接用spring.redis.host=redis的配置,不需要修改为localhost。

内容的提问来源于stack exchange,提问作者Owolabi Ezekiel Tobiloba

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:33:00