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

Docker中启动Rails时反复出现Redis::CannotConnectError错误求助

解决Docker中Rails连接Redis时的Redis::CannotConnectError错误

你遇到的错误是Rails容器无法解析Redis服务地址导致的连接失败,以下是针对性的排查和解决步骤:

  • 确认Redis容器运行状态
    先检查Redis容器是否正常启动:

    docker ps
    

    若Redis容器未运行,启动对应服务(假设服务名为redis):

    docker-compose start redis
    

    若容器启动失败,查看日志定位问题:

    docker logs <redis容器ID/名称>
    
  • 修正Rails的Redis连接配置
    检查Rails项目中的Redis配置文件(如config/initializers/redis.rb、config/cable.yml),确保连接地址使用Docker服务名而非localhost:

    # 正确示例(使用Docker Compose定义的服务名)
    Redis.new(host: 'redis', port: 6379)
    

    容器内的localhost指向自身,无法访问其他容器,必须用服务名让Docker DNS解析到对应的Redis容器。

  • 测试容器间网络连通性
    进入Rails容器,尝试ping Redis服务名验证网络可达性:

    docker exec -it <Rails容器ID/名称> ping redis
    

    若ping不通,检查Docker Compose的网络配置,确保Rails和Redis容器处于同一自定义网络或默认网络中。

  • 重置Docker服务栈
    清理旧的容器、网络后重新构建启动,解决可能的网络缓存问题:

    docker-compose down
    docker-compose up --build
    

    若需要保留Redis数据,不要添加-v参数(该参数会删除数据卷)。

  • 排查防火墙与端口配置
    确认宿主机防火墙未阻止容器间的内网通信;若Redis无需外部访问,无需映射6379端口到宿主机,容器内部通过服务名直接通信即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:50:45