Estou com problemas para conectar meu aplicativo Spring Boot ao Redis em um ambiente Docker. Enquanto meu aplicativo se conecta com sucesso ao PostgreSQL na mesma rede Docker, as conexões Redis falham com:
Você pode me ajudar a corrigir esse problema, para que minha aplicação API consiga enviar requisições ao Redis mesmo dentro do Docker.
Obs: Se eu executar meu aplicativo Rest API localmente (não no Docker) e chamar qualquer endpoint que use Redis, ele funciona como esperado, o problema está apenas dentro do Docker.
mensagem:
{
"apiPath": "uri=/v1/devices/38",
"errorCode": "INTERNAL_SERVER_ERROR",
"errorMessage": "Unable to connect to Redis",
"errorTime": "2025-03-28T16:57:26.309001832"
}
docker-compor:
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:
aplicação.propriedades
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