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

Windows下Docker部署Redis遇网络连接被拒绝错误求助

解决Docker Redis连接被拒绝的问题

一、检查Docker Redis容器的端口映射

  • 运行容器时必须显式映射6379端口到主机,执行以下命令创建容器:
    docker run -d -p 6379:6379 --name redis redis:latest
    
  • 验证端口映射:执行docker ps查看容器的PORTS列,确认存在0.0.0.0:6379->6379/tcp或[::]:6379->6379/tcp的映射记录
  • 若已运行的容器未配置端口映射,需删除容器后重新创建(这是最直接的修复方式)

二、修改Redis配置允许外部访问

官方Redis镜像默认仅绑定容器内部的127.0.0.1,主机无法直接访问,需调整配置:

  1. 启动容器时直接指定参数(推荐):
    docker run -d -p 6379:6379 --name redis redis:latest redis-server --bind 0.0.0.0 --requirepass pass
    
    其中--bind 0.0.0.0允许所有IP访问,--requirepass pass设置认证密码(与代码中的密码保持一致)
  2. 或自定义配置文件挂载:
    创建redis.conf文件,添加以下内容:
    bind 0.0.0.0
    requirepass pass
    
    再通过挂载配置文件启动容器:
    docker run -d -p 6379:6379 -v ./redis.conf:/usr/local/etc/redis/redis.conf --name redis redis:latest redis-server /usr/local/etc/redis/redis.conf
    

三、修正Dart代码中的问题

1. 修复AUTH命令格式

Redis的AUTH命令默认不需要用户名,代码中多余的default参数会导致认证失败,修改后:

await command.send_object(['AUTH', 'pass']);

2. 优化连接复用与错误处理

避免每次请求新建连接,同时区分连接错误和认证错误:

final conn = RedisConnection();

Handler middleware(Handler handler) {
  return (context) async {
    Response response;

    try {
      final command = await conn.connect('localhost', 6379);

      try {
        // 修正后的AUTH命令
        await command.send_object(['AUTH', 'pass']);
        response = await handler.use(provider<Command>((_) => command)).call(context);
      } catch (authErr) {
        await command.close(); // 认证失败关闭连接
        response = Response.json(
          body: {'success': false, 'message': 'Redis认证失败: ${authErr.toString()}'},
        );
      }
    } catch (connErr) {
      response = Response.json(
        body: {'success': false, 'message': 'Redis连接失败: ${connErr.toString()}'},
      );
    }

    return response;
  };
}

四、检查Windows防火墙设置

  • 确保Windows防火墙允许Docker Desktop的网络请求,可暂时关闭防火墙测试(测试完成后恢复开启)
  • 排查是否有安全软件拦截6379端口的连接请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 12:42:50