sse -> redis pub/sub로의 전환기인데, 구현자체는 어렵지않은데 redis 설정이 되게 오래걸렸다.
단순히 따라하는것이 아닌, 어느정도 이해가 필요하다 보니 오래걸렸던것같다.
우선 설명하기전에, redis.conf 파일에 대해 알아보자.
redis.conf 파일은 로컬에서 redis를 다운 할경우 자동으로 생성되는 파일이라고 한다.
하지만 원격(aws)의 docker-compose에 굴리려면 redis.conf 파일이 존재하지않는다. 따라서, 직접 다운을 받아 넣어주도록하자.
나는 여기를 참고했다.
https://github.com/gingaminga/docker-redis/blob/main/redis.conf
자신이 참고할 aws의 경로에 redis.conf 파일을 그대로 드래그해서 넣어주자.
그리고 경로를 정해 주어야한다.
docker-compose.yml을 수정하자.
redis:
container_name: redis
image: redis:latest
hostname: redis
env_file:
- .env
ports:
- ${REDIS_BINDING_PORT}:${REDIS_PORT}
volumes:
- ${REDIS_DATA_PATH}:/data
- ${REDIS_DEFAULT_CONFIG_FILE}:/etc/redis/redis.conf
command: redis-server /etc/redis/redis.conf
restart: always
requirepass ${PASSWORD}
친절하게 설명도 나와있다. aws 보안규칙에서는 0.0.0.0/0으로 외부접근을 열어놨으니 여기도 열어야한다.
여기서 redis의 바인드 규칙은
127.0.0.1 ::1 -> 이건 로컬 테스트 용이다. 즉 원격 네트워크에서 내부 테스트 용이라는 소리다. 외부에서 reids 접근이 불가능하다.
0.0.0.0 :: 1 -> 모든 포트에서 접근이 가능하다. 이걸로 바꿔주자.
변경내용을 저장한후, 도커컴포즈를 업데이트 해주자.
이제 외부에서 접근이 가능하다. 스프링을 실행하고 관련 api를 돌려보면
성공적으로 실행된다.