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

Spring Boot连接Docker Redis非默认端口(6382)出现超时问题求助

解决Spring Boot连接Docker Redis自定义端口6382超时问题

1. 检查Docker容器端口映射配置

Docker容器网络是隔离的,自定义端口必须完成宿主机与容器内端口的映射。注意:容器内Redis默认监听6379端口,你需要将宿主机的6382端口映射到容器内的6379端口:

  • 查看现有容器端口映射:
    docker ps
    
    确认PORTS列是否包含0.0.0.0:6382->6379/tcp
  • 若未配置映射,重新启动容器(示例容器名为redis):
    docker stop redis && docker rm redis
    docker run -d --name redis -p 6382:6379 redis
    
    若使用Docker Compose,修改docker-compose.yml的ports字段:
    services:
      redis:
        image: redis
        ports:
          - "6382:6379"
    

2. 验证宿主机端口连通性

先确认宿主机本身能访问6382端口,排除容器外的网络问题:

  • 使用telnet测试:
    telnet localhost 6382
    
    连接成功会进入交互界面,失败则说明端口未开放
  • 或使用nc工具:
    nc -zv localhost 6382
    
    查看输出是否显示连接成功

3. 检查Redis容器内的网络配置

如果启动Redis时挂载了自定义配置文件,需确认:

  • bind配置项设置为0.0.0.0(或注释掉,允许所有IP访问),避免仅绑定容器内的127.0.0.1导致宿主机无法连接
  • protected-mode设置为no(生产环境建议配合密码认证,而非直接关闭保护模式)

4. 确认Spring Boot配置生效

排查配置是否被正确加载:

  • 检查配置文件(application.properties/application.yml)是否放置在正确路径
  • 在启动日志中搜索redis.port,确认输出值为6382
  • 可在代码中注入端口参数验证:
    @RestController
    public class TestController {
        @Value("${spring.redis.port}")
        private Integer redisPort;
    
        @GetMapping("/redis-port")
        public String getRedisPort() {
            return "Redis Port: " + redisPort;
        }
    }
    

5. 排查防火墙/安全组拦截

  • 本地环境:检查系统防火墙是否拦截了6382端口的入站请求
  • 云服务器:确认安全组规则已开放6382端口的TCP访问

6. 排除RedisConfig类冲突

你的RedisConfig仅自定义了RedisTemplate的序列化规则,不会影响连接参数(RedisConnectionFactory由Spring Boot自动配置,读取spring.redis前缀的属性)。若怀疑配置类有问题,可暂时注释掉@Configuration和@EnableRedisRepositories注解,测试是否能正常连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 13:00:11