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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:30:28