Docker setting problem

황상익·2025년 5월 13일

Spring Boot + Redis + Docker 문제 해결 정리

📌 문제 요약

Spring Boot 앱이 Redis에 연결하지 못하고 다음과 같은 예외 발생:

RedisConnectionFailureException: Unable to connect to Redis
→ io.lettuce.core.RedisConnectionException: Unable to connect to localhost:<unresolved>:6379

🧪 시도한 해결 방법 및 시도 내역

시도결과비고
application.properties에 설정 추가❌ 실패Docker 내에서 반영되지 않음
환경변수 (SPRING_REDIS_HOST) 지정❌ 실패RedisProperties가 이를 매핑하지 않음
명령줄 인자 --spring.redis.host=redis 추가❌ 실패RedisProperties는 system property도 반영되지 않음
docker exec로 Redis 직접 ping✅ 성공Redis 자체는 정상 작동 중
Redis 컨테이너 health check✅ healthyRedis 서버는 정상 상태
RedisProperties 대신 @Value로 설정 변경✅ 성공핵심 해결 방법!

🎯 최종 해결 방법

@Configuration
@Slf4j
public class RedisConfig {

    @Value("${spring.redis.host}")
    private String redisHost;

    @Value("${spring.redis.port}")
    private int redisPort;

    @PostConstruct
    public void logProps() {
        log.info("🌐 Redis 연결정보 host={}, port={}", redisHost, redisPort);
    }

    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        return new LettuceConnectionFactory(redisHost, redisPort);
    }

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory cf) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(cf);
        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(new StringRedisSerializer());
        return template;
    }
}

docker-compose.yml 변경사항

command: [
  "java", "-jar", "app.jar",
  "--spring.redis.host=redis",
  "--spring.redis.port=6379"
]

environment:
  - SPRING_REDIS_HOST=redis
  - SPRING_REDIS_PORT=6379

결과

애플리케이션 기동 성공
Redis 연결 정상
RedisTemplate을 통한 데이터 read/write 정상 작동
디버깅 환경(docker logs, exec)에서도 정상 반영됨

profile
개발자를 향해 가는 중입니다~! 항상 겸손

0개의 댓글