Docker中Redis容器IP地址固定为127.0.0.1怎么解决?

docker中的redis容器IP地址一直都是127.0.0.1,无法改变?

背景:把Springboot项目部署到docker了,然后在运行项目时,Caused by: org.redisson.client.RedisConnectionException: Unable to connect to Redis server: /127.0.0.1:6379
尝试:1、修改了redis.conf0c77096b52b4e182b803527e2a006d4.png
2、修改项目的配置文件image.pngcbfb10cf7845a6fc1fadd68b68a02bb.png
3、这是redis容器,name为myredis,而且mysql和myredis都connect到了heima网络里面了image.png
在修改配置后,我都有重启各个容器,但仍然无效

问题已经解决
问题是在Java程序这一端

public class RedissonConfig {
    @Value("${spring.redis.host}")
    private String redisHost;
    @Bean
    public RedissonClient redissonClient(){
        //配置
        Config config=new Config();
        //之前在这里把redis的ip写死了
        config.useSingleServer().setAddress("redis://"+redisHost+":"+"6379");
        //创建RedissonClient对象
        return Redisson.create(config);
    }
阅读 2.2k
5 个回答

看你的截图,配置文件里面host填写的是容器名字,然后错误提示也是java程序给的异常,提示连接不到127.0.0.1:6379这个地址。

按理说这里应该解析到的是容器内部的地址,通常应该是172.x.x.x这样的IP。

你试试启动一个新容器 docker run --network heima -it --rm busybox sh,然后在进入容器后,试试ping一下myredis或者mysql,看看ping命令解析到的IP是什么。我感觉这里可能是程序哪里有问题,不像是redis或者docker的问题。

正常情况下,在执行ping的时候肯定是能ping通的,因为都在一个heima的网络下。ping的IP也应该是对应的容器内的IP,肯定不可能会是127.0.0.1这个地址。那么问题大概就是java程序的问题了,我猜可能是读错配置文件了,或者在哪里写死了。

配置文件中的redis.host 改成宿主机的ip地址。

新手上路,请多包涵

分别登录的你的程序容器和redis容器里,ping下你设置的host,看能ping通不。

自制的镜像把redis的启动命令改成 redis-server /etc/redis/redis.conf --bind 0.0.0.0

使用官方镜像按照官方指引:https://hub.docker.com/_/redis

docker run --name some-redis -d redis redis-server --save 60 1 --loglevel warning --bind 0.0.0.0

安全起见 建议指定network并且宿主机不开放redis端口

把两个容器加到同一个网络中, 可以用容器名字访问对应容器的网络.

用docker network create 创建一个网络, 启动容器时, 添加参数 --netword=新建的docker网络名

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏