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

Docker环境下Spring Boot应用无法连接Redis的问题排查求助

Docker环境下Spring Boot应用无法连接Redis的问题排查求助

大家好,我最近碰到一个棘手的问题:我的Spring Boot应用在Docker环境中无法连接Redis,但同一个Docker网络里的PostgreSQL却能正常建立连接。而且如果我在本地直接运行这个REST API应用(不通过Docker),调用任何涉及Redis的接口都能正常工作,只有在Docker内部运行时才会出现连接失败的情况。

具体的错误返回信息如下:

{
    "apiPath": "uri=/v1/devices/38",
    "errorCode": "INTERNAL_SERVER_ERROR",
    "errorMessage": "Unable to connect to Redis",
    "errorTime": "2025-03-28T16:57:26.309001832"
}

我使用的docker-compose.yml配置如下:

version: '3.8'

services:
  postgres:
    image: postgres:latest
    environment:
      POSTGRES_DB: devicedb
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: admin
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U admin"]
      interval: 30s
      timeout: 10s
      retries: 5

  redis:
    image: "redis"
    ports:
      - "6379:6379"
    command: redis-server --appendonly yes --requirepass admin  # Added password requirement
    healthcheck:
      test: ["CMD", "redis-cli", "-a", "admin", "ping"]  # Added auth for healthcheck
      interval: 30s
      timeout: 10s
      retries: 5

  app:
    build: .
    ports:
      - "8080:8080"
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_healthy
    environment:
      SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/devicedb
      SPRING_DATASOURCE_USERNAME: admin
      SPRING_DATASOURCE_PASSWORD: admin
      SPRING_REDIS_HOST: redis
      SPRING_REDIS_PORT: 6379
      SPRING_REDIS_PASSWORD: admin 

volumes:
  postgres_data:

应用的application.properties配置:

spring.application.name=ManageDevices

server.port=8080
server.address=0.0.0.0

spring.datasource.url=jdbc:postgresql://postgres:5432/devicedb
spring.datasource.username=admin
spring.datasource.password=admin
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=update

spring.redis.host=redis
spring.redis.port=6379
spring.redis.password=admin

麻烦各位帮忙分析一下问题出在哪里,怎么才能让Docker里的应用正常连接到Redis呢?

备注:内容来源于stack exchange,提问作者Henrique Vital

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 20:09:30