Spring boot와 Spring security로 사용자 인증을 구현했고 캐시 서버로 redis를 사용하고자 했다. Spring 프로젝트의 application.yml에 redis 관련 설정으로 다음과 같이 했다.
spring:
config:
activate:
on-profile: local
redis:
host: 127.0.0.1
port: 6379
Spring boot 환경의 통합테스트를 통해 로컬에서 문제가 없음을 확인하고 Docker로 EC2 서버에 Spring 프로젝트와 Redis를 배포하기 위해서 spring 프로젝트 docker-compose.yml 파일과 redis의 docker-compose.yml 파일을 만들어서 각각 컨테이너에 올렸다.
application.yml의 redis.host를 인식하지 못해 서버에 배포된 Spring 프로젝트는 Redis와 연결되지 못했고, 일반적으로 ip를 사용하기 보다는 컨테이너 서비스 이름을 사용한다고 한다.
그래서 host및 redis 서비스, 컨테이너 이름을 redis로 변경했지만 문제는 해결되지 않았다.
Spring 프로젝트와 redis를 각각 docker-compose.yml로 분리해서 Spring 프로젝트가 서비스명 만으로는 redis를 찾을 수 없던 것이 원인이었던걸로 보인다.
분리되어있던 docker-compose.yml을 하나로 합치고 depends_on으로 순서를 정했다. 연결되지 않던 문제는 해결했지만 redis의 커스텀 설정 파일을 사용하지 못했고 Spring과 redis가 함께 있어야하는 점이 최선은 아닌 것 같아서 우선순위를 낮게하고 더 나은 해결방안을 찾아봐야겠다.