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

Docker多容器部署Yii2无法连接Redis:Connection refused 111问题

问题解决:Yii2容器无法连接Docker中的Redis容器

问题根源

  • Yii2配置中Redis主机设为127.0.0.1,在PHP容器内该地址指向容器自身,而非Redis容器。
  • Redis配置文件中bind 127.0.0.1限制Redis仅监听容器本地端口,外部容器无法访问。

修复步骤

1. 修改Yii2的Redis连接配置

编辑/frontend/config/main.php,将Redis的hostname替换为Docker Compose中Redis服务的名称redis:

return [
    'components' => [
        'cache' => [
            'class' => 'yii\redis\Cache',
            'redis' => [
                'hostname' => 'redis', // 替换原127.0.0.1
                'port' => 6379,
                'database' => 1,
            ],
        ],
        // 其他组件配置...
    ],
];

2. 修改Redis配置,允许外部容器访问

编辑/docker/redis_data/conf/redis.conf,将bind 127.0.0.1改为bind 0.0.0.0,让Redis监听所有网卡:

bind 0.0.0.0
protected-mode no
port 6379
# 其他配置保持不变...

3. 重启相关容器

执行命令重新构建并启动Redis和PHP-FPM容器:

docker-compose down redis php-fpm
docker-compose up -d --build redis php-fpm

补充说明

  • Docker Compose会自动为同一网络下的服务创建DNS解析,服务名称(如redis、php-fpm)可直接作为主机名访问。
  • 本地redis-cli能访问是因为端口映射到了宿主机,但容器间通信依赖内部网络,无需通过宿主机端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:15:38