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

Docker Compose部署时Spring Boot连接Redis被拒问题求助

问题解决方案与排查方向
  • 配置加载优先级排查
    报错明确显示应用使用了Spring Data Redis默认的localhost:6379连接地址,说明自定义的spring.redis.host配置没有生效,首先按以下步骤核对:
    1. 检查jar包内置配置文件:执行jar tf app.jar | grep application.properties确认配置文件被打入jar包,再执行jar xf app.jar BOOT-INF/classes/application.properties提取文件,核对内容是否包含spring.redis.host=redis-db配置。
    2. 强制指定启动参数验证:修改Dockerfile的启动命令,直接在运行时传入Redis配置,优先级高于所有内置配置:
    FROM openjdk:8-jre-alpine
    VOLUME /tmp
    COPY app.jar app.jar
    EXPOSE 8082
    ENTRYPOINT ["java", "-jar",  "app.jar", "--spring.redis.host=redis-db", "--spring.redis.port=6379"]
    
    重新构建镜像启动后如果连接正常,即可证明是原有配置加载逻辑存在问题。
  • 硬编码配置排查
    检查项目中是否存在手动编写的Redis连接工厂、RedisTemplate配置类,确认是否有硬编码host=localhost的逻辑,手动配置的连接参数优先级高于application.properties配置。
  • Docker网络连通性排查
    当前使用的links是Docker Compose已弃用的旧特性,容易出现域名解析异常,建议替换为自定义网桥保证服务互通,修改docker-compose.yml如下:
    version: "3.9"
    services:
      web:
        build: .
        ports:
          - "8082:8082"
        depends_on:
          - redis
        networks:
          - app-network
      redis:
        image: redis
        container_name: redis
        hostname: redis-db
        ports:
          - "6379:6379"
        command: redis-server --port 6379 --bind 0.0.0.0 --protected-mode no
        networks:
          - app-network
    networks:
      app-network:
        driver: bridge
    
    修改后启动服务,可进入web容器手动验证连通性:
    # 进入web容器
    docker exec -it sgartner-web-1 sh
    # 验证域名解析
    ping redis-db
    # 验证端口连通性
    nc -zv redis-db 6379
    

内容的提问来源于stack exchange,提问作者pls_help

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:45:09