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
相关产品推荐
相关产品推荐

