환경 : MAC m1
로컬 redis에 connect가 안됐던 이슈
문제
어제까지 잘만 되던 프로젝트(Spring boot)가 갑자기 redis connect가 안되어서 build가 안되는 문제가 있었다.
아래 사진처럼 계속 Unable to connect to Redis 라고 나왔다.
시도 1 - Redis 껐다키기
내 redis 문제인가 하고 redis를 중단했다가 다시 실행해봤다. 명령어는 아래와 같다.
brew services restart redis
redis를 껐다 키고 노트북을 재부팅했는데도 같은 현상이 일어났다.
시도 2 - Redis 삭제했다가 다시 깔기
그래서 이번엔 아예 삭제해봤다…..
brew uninstall redis
이 명령어를 입력하니까 아래와 같이 잔여물(?)이 남았다는 Warning이 나와서 해당 파일들도 모두 삭제해주고 재설치하고 다시 실행해봤다.
rm -rf /opt/homebrew/etc/redis-sentinel.conf
rm -rf /opt/homebrew/etc/opt/homebrew/etc/redis.conf
rm -rf /opt/homebrew/etc/opt/homebrew/etc/redis.conf.default
brew install redis
redis-server
그래도 build 실패!
시도 3 - YML 점검(해결)
결국 이건 내 로컬 reids의 문제가 아니고 무조건 yml의 문제다…….. 라고 생각했다.
현재 yml 파일은 dev와 local로 나뉘어있는데, 로컬에서 내 프로젝트 빌드할 때는 local yml을 돌린다. 그래서 우선 local yml의 redis 부분을 다시 들여봤다. 일단 들여쓰기 틀렸는지부터 살펴봄(yml은 들여쓰기 잘못되면 실행안되니까 주의하자).
그런데 여기서 host : redis가 눈에 띄었다. 로컬의 hostname과 안 맞는건가?라고 생각했다.
spring:
...생략
data:
redis:
host: redis
port: 6379
...생략
알아보니까 host : redis는 Docker에서 실행할 때 사용할 수 있는 이름이라고 한다..! 우리는 dev를 Docker에서 돌리는데, 그 내용이 어떻게 local yml 흘러 들어간 모양....
yml을 아래와 같이 바꿔줬다. 로컬에서 돌릴 경우 host를 localhost라고 해주어야한다고 한다.
spring:
...생략
data:
redis:
host: localhost
port: 6379
...생략
바꾸니까 정상적으로 잘 connect되고 프로젝트 빌드도 잘된다.
프로젝트 팀원들과 github의 submodule로 local, dev yml을 공유하고 있는데 새로 update하는 과정에서 꼬인 모양이다. 팀원들이랑 문서 공유할 땐 주의하도록 하자.