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
相关产品推荐
相关产品推荐

