로컬 spring boot에서 aws docker-compose redis 접속

Jung In Lee·2024년 4월 5일
0

Novelit

목록 보기
3/7

(1) 로컬 spring boot에서 aws docker-compose redis 접속

  • 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
  • volumes 부분에서 redis config file path를 추가해주었다.
  • 이제 좌측 경로로 redis.conf에 접근하면된다.
  • redis.conf 파일을 넣어주지않을경우 폴더로 생성이된다. 드래그해서 넣어주자.
  • 도커 컴포즈 업데이트 후, redis.conf 파일을 찾아 연다.
    우리가 봐야할 부분은 2가지이다.
  1. 크롤링 봇들이 돌아다니기 때문에 먼저 password를 설정해야한다.
  • vi 편집기를 연후, "/requirepass"를 통해 password를 설정하는 부분을 찾아 비밀번호를 입력한다.
	requirepass ${PASSWORD}
  1. 포트를 직접 바인딩 시켜야한다 "/bind "를 검색해 바인딩 부분을 찾아낸다.
  • 친절하게 설명도 나와있다. aws 보안규칙에서는 0.0.0.0/0으로 외부접근을 열어놨으니 여기도 열어야한다.

  • 여기서 redis의 바인드 규칙은

  • 127.0.0.1 ::1 -> 이건 로컬 테스트 용이다. 즉 원격 네트워크에서 내부 테스트 용이라는 소리다. 외부에서 reids 접근이 불가능하다.

  • 0.0.0.0 :: 1 -> 모든 포트에서 접근이 가능하다. 이걸로 바꿔주자.

  • 변경내용을 저장한후, 도커컴포즈를 업데이트 해주자.

  • 이제 외부에서 접근이 가능하다. 스프링을 실행하고 관련 api를 돌려보면

  • 성공적으로 실행된다.

스프링 redis 설정

  • 스프링 레디스 설정은 이렇게 하면된다.
  • application.yml
  • 여기서 host에는 탄력적 ip주소가 들어간다. 나도 정확하게 썼다고 생각했는데, 틀렸었고, 이거랑 bind 만 계속 바꾸고있었다.....
  • 이거 제대로 입력해주고, bind 설정만 제대로해도 접속이 될것이다.
  • redis pub/sub 구현은 다음장에서 다루도록 하겠다.

느낀점

  • novelit 프로젝트에서도 느낀거지만, 설정이 가장 어렵다. 설정은 단순히 블로그 참고하기만해서 할수가 없었다. 찾아보는 과정에서 필요한걸 계속 찾아보고, 개념을 찾아보게된다. 시간은 많이 들어도, 꼭 해결해서 배워가는게 중요한것같다.
profile
Spring Backend Developer

0개의 댓글