AI 摘要

文章总结:当使用Docker运行项目时,连接Redis服务器通常会失败,因为使用127.0.0.1:6379的环回地址指向的是Docker内部的地址。解决方法是编辑Redis配置文件,允许外网连接,修改bind和protected-mode设置,保存并重启Redis服务器。接下来,需要查找服务器的内网地址并在Docker项目中将Redis配置中的127.0.0.1替换为该内网地址,并填写正确的密码。这样可以正常连接Redis服务器,以便在使用云数据库时进行内存缓存。

当使用docker运行项目时,

使用127.0.0.1:6379的本地默认环回地址连接redis时总会出现连接失败的问题,

如何修复以上问题?

(本文默认您拥有基本ubuntu服务器操作技巧,以及docker项目和redis服务器已正常安装。)

 

Docker
Docker

第一步:编辑redis配置文件允许外网连接。

sudo nano /etc/redis/redis.conf                             #开启redis的配置文件。

找到以下代码并修改,

bind 127.0.0.1 ::1  ——>  #bind 127.0.0.1 ::1                                  #允许所有ip可以连接

protected-mode yes ——> protected-mode no                              #内网保护模式关闭

#requirepass foobared  ——>  requirepass yourpassword          #设置redis连接密码

保存文件

sudo systemctl restart redis-server                                                   #重启redis服务器使配置生效

第二步:连接redis服务器

sudo apt install net-tools                                                                     #安装ip工具查看服务器绑定的专有内网地址

ifconfig

找到eth0 的inet 背后以10开头的内网专用ip地址

内网地址
内网地址

记下这个ip地址,

然后进入你的docker 项目内填写redis配置的地方把127.0.0.1的环回地址改为10开头的内网专用ip地址

再把密码填写好,即可正确连接redis服务器。

Redis
Redis

总结

为什么直接连接127.0.0.1:6379无法连接到redis服务器?

因为在docker内部使用127.0.0.1作为环回地址时,其实使用的不是服务器自身的127.0.0.1的环回地址,而是使用的docker内部自己的环回地址,导致连接失败。

为什么要使用redis服务器?

redis内存缓存主要用于数据库不在本地时对数据进行缓冲的作用,比如说我的博客是基于云Mysql数据库的,需要启用redis作为内存缓存,降低访问延时。

本博客另一篇文章:Docker应用如何连接到宿主机网络 - Sereniblue是此方法的提升和简化,若您扔为解决问题,可以参照这篇文章内容进行设置。