독학/[etc] 개발 관련 내용 정리

[redis⚡] redis 접근 오류 해결 기록

최연재 2025. 5. 18. 12:56

🎯상황 설명

- 로그인/로그아웃 시 토큰을 관리하기 위해 redis를 이용했다.

- 로컬에서는 문제가 없어서 배포 환경까지 올렸는데, redis에 접근해야 할 때마다 아래와 같은 에러가 발생했다.

- 에러 로그 

  • Unable to connect to localhost/~~
  • Connection refused

에러 로그가 친절하게 문제점을 알려주고 있다. 

당시 백엔드 시스템 아키텍쳐

 

🚀 문제 파악

✨ 핵심

  • redis를 localhost로 설정했기 때문에 redis를 찾지 못해 발생한 에러이다.
  • docker-compose에서 지정한 서비스 이름을 이용해 host를 설정하도록 변경하면 된다.

🌎 배포 환경에서의 localhost 

  • localhost는 컨테이너 내부에서의 자기 자신을 가리킨다.
  • Spring boot 컨테이너 내에서 localhost:포트번호로 접속을 시도하면 Spring boot 컨테이너 내부에서 redis를 찾으려고 시도한다.
  • 하지만 redis는 별도의 다른 컨테이너로 띄워져 있으므로 Spring boot 컨테이너 내부에 redis가 존재하지 않는다.

🏠 로컬 개발 환경에서의 localhost 

  • redis가 호스트 머신(OS)에서 직접 실행 중이기 때문에 Spring boot에서 localhost로 접근을 시도해도 된다.
  • 구조가 아래와 같기 때문이다.
[호스트 머신]
├── Redis: localhost:6379
└── Spring Boot: localhost:8080

 

 

🪄 문제 해결

  • 당시 나는 GitHub Repository secrets를 이용해서 데이터를 관리하고 있었기에 알맞게 수정했다.
  • 하지만 불구하고 계속 localhost로 접근을 시도했다. 중간에 환경변수들을 확인해도 맞게 잘 넘어오는데 실행만 되면 안 돼서 chatGPT한테 조언을 구했다.
  • "하드코딩"되어 있을 수도 있다고 해서 '에이~ 설마' 했는데 진짜였다..

다음과 같이 수정하니 잘 되었다! 하드코딩하지 말자는 깨달음을 한 번 더 얻었다..