Docker-Compose部署SpringBoot与Redis容器无法连接问题求助
SpringBoot无法连接同一Docker网络中的Redis问题修复
问题诊断
你的SpringBoot应用和Redis容器处于同一Docker网络,但出现连接拒绝错误,核心可能有两个原因:
- Docker Compose的YAML配置存在缩进语法错误,导致服务解析异常
- SpringBoot容器在Redis完全就绪前启动,尝试连接时Redis服务未就绪
修复步骤
1. 修正Docker Compose的YAML语法错误
你的docker-compose.yml中子服务的属性(image、ports)缩进不符合YAML规范,这会导致Compose无法正确加载服务配置。修正后的完整配置如下:
version: '3' services: redis-server: image: 'redis' ports: - "6379:6379" springboot-app: build: . ports: - "8080:8080"
2. 添加启动依赖与健康检查
为了避免SpringBoot在Redis未就绪时发起连接,给Redis添加健康检查,并让SpringBoot依赖Redis的健康状态启动:
version: '3' services: redis-server: image: 'redis' ports: - "6379:6379" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 5 springboot-app: build: . ports: - "8080:8080" depends_on: redis-server: condition: service_healthy
3. 验证Redis配置正确性
确认application.properties中的配置无误,使用Docker Compose服务名redis-server作为主机名是正确的,同一网络内Docker会自动解析该名称:
server.port=8080 spring.redis.host=redis-server spring.redis.port=6379
4. 手动排查连通性(可选)
如果问题仍存在,可进入SpringBoot容器测试与Redis的连通性:
# 进入SpringBoot容器 docker exec -it visitsapplication-springboot-app-1 bash # 安装ping工具(若容器内无此工具) apt update && apt install -y iputils-ping # 测试Redis服务名解析 ping redis-server # 测试端口连通性 apt install -y telnet telnet redis-server 6379
5. 检查Redis服务状态
查看Redis容器日志,确认服务正常启动:
docker-compose logs redis-server
日志中出现Ready to accept connections字样表示Redis服务正常运行。
内容的提问来源于stack exchange,提问作者Vidyasagar Ramachandran
相关产品推荐
相关产品推荐

