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

Laravel+Docker环境下Redis报错Connection refused的解决求助

解决Laravel+Docker环境下Redis连接拒绝问题

核心问题分析

容器间通信使用容器内部端口,而非宿主机映射的端口。你当前.env中REDIS_PORT=8002是宿主机映射端口,Redis容器内部实际监听的是默认的6379端口,这是连接失败的主要原因。

具体修复步骤

1. 修正.env配置

将REDIS_PORT改为容器内部端口6379:

REDIS_CLIENT=predis
REDIS_HOST=redis
REDIS_PASSWORD=sample
REDIS_PORT=6379

2. 确保app服务与redis服务建立连接

在docker-compose.yml的app服务中添加links和depends_on(确保redis服务优先启动):

app:
  build:
    context: ./
    dockerfile: app.docker
  volumes:
    - ./:/var/www
  links:
    - db
    - redis  # 添加该行,建立与redis服务的链接
  depends_on:
    - db
    - redis  # 添加该行,确保redis服务先启动
  environment:
    - DB_PORT=3306
    - DB_HOST=db

3. 验证Redis容器的密码配置

官方redis:alpine镜像的REDIS_PASSWORD环境变量会自动设置requirepass,如果仍存在密码验证问题,可在redis服务的command中显式指定密码:

redis:
  image: redis:alpine
  container_name: redis
  command: redis-server --save 60 1 --loglevel warning --requirepass sample
  volumes:
    - ./data/redis:/data
  ports:
    - "8002:6379"

4. 重启容器并清除配置缓存

执行以下命令重启容器,同时清除Laravel的配置缓存:

# 重启所有容器
docker-compose down && docker-compose up -d

# 进入app容器清除缓存
docker-compose exec app php artisan config:clear
docker-compose exec app php artisan cache:clear

5. 额外排查项

  • 关闭本地通过brew启动的Redis服务,避免端口干扰:
    brew services stop redis
    
  • 检查Redis容器运行状态:
    docker-compose logs redis
    
    确认日志中存在Ready to accept connections提示,说明服务正常启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 07:52:53