Laravel Sail多项目Redis端口冲突:连接被拒问题排查
解决Laravel Sail中Redis端口修改后连接拒绝问题
核心问题分析
你混淆了宿主机端口映射和容器内部通信端口:Docker端口映射6380:6379是让宿主机通过6380访问Redis容器,但同一Docker网络内的Laravel容器与Redis容器通信时,必须用Redis容器内部的端口6379,而非宿主机的映射端口6380。
分步解决方案
修正.env配置
将.env中的REDIS_PORT改回6379,同时确保REDIS_HOST设置为你的Redis容器名称(查看项目docker-compose.yml中Redis服务的container_name或服务名,默认是redis):REDIS_HOST=redis REDIS_PORT=6379重启容器生效配置
停止并重启容器,确保端口映射和网络配置更新:sail down sail up -d若之前的容器配置有残留,可加上
-v清理卷(注意:会删除Redis数据,谨慎使用):sail down -v sail up -d彻底清理缓存
执行以下命令清除配置缓存和应用缓存,确保新配置生效:sail artisan config:clear sail artisan cache:clear验证容器间通信
进入Laravel容器,用redis-cli测试与Redis容器的连接:sail shell redis-cli -h redis -p 6379若能成功进入Redis交互界面,说明通信正常。
排查宿主机6379端口可访问问题
宿主机仍能访问6379,大概率是其他Laravel项目的Redis容器占用了该端口,或是宿主机本地安装了Redis服务。可通过以下命令查看端口占用:# macOS/Linux lsof -i :6379 # Windows netstat -ano | findstr :6379确认占用来源后,可停止对应服务或调整其他项目的端口映射。
内容的提问来源于stack exchange,提问作者Kipras Bielinskas
相关产品推荐
相关产品推荐

