Docker容器内Spring Boot应用无法连接Redis问题求助
解决方案
以下是针对该问题的修复步骤:
问题根因1:你在docker-compose中仅配置了PostgreSQL相关的环境变量,未配置Redis的环境变量,应用默认读取
application.properties中的localhost作为Redis地址,而容器内部的localhost指向应用容器本身,自然无法访问同网络下的Redis容器。
修复方法:在docker-compose.yml的versatile服务的environment节点中新增Redis相关配置:- SPRING_REDIS_HOST=redis - SPRING_REDIS_PORT=6379 - SPRING_REDIS_PASSWORD=该配置优先级高于
application.properties,无需修改本地配置文件即可生效。问题根因2:你的报错日志显示实际生效的Redis客户端为Lettuce,而非你声明使用的Jedis,说明项目依赖中未排除Spring Boot默认集成的Lettuce,导致Jedis配置不生效。
修复方法:根据你的包管理工具调整依赖:- Maven配置(pom.xml):
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <exclusions> <exclusion> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency>- Gradle配置(build.gradle):
implementation ('org.springframework.boot:spring-boot-starter-data-redis') { exclude group: 'io.lettuce', module: 'lettuce-core' } implementation 'redis.clients:jedis'问题根因3:你之前修改
application.properties中的Redis地址为redis后未重新构建镜像,docker启动时仍使用旧镜像中的配置,导致修改不生效。
修复方法:调整配置后执行以下命令重新构建启动服务:docker-compose down -v docker-compose up --build -d
内容的提问来源于stack exchange,提问作者CommoMegaSator
相关产品推荐
相关产品推荐

