도커로 레디스 띄워서 스프링 컨테이너랑 통신하기 (DevOps)

2025. 7. 29. 00:01·DevOps/Docker

들어가며

먼저  redis라는 기술 스택을 refresh token의 효율적인 관리를 위해서 도입하게 되었고, 해당 경험에서 도커 컨테이너를 활용해 경량화하여 띄우는 방식을 사용했다. 여러 사람이 함께 협업해야하는 특성상 도커를 활용하면 OS 환경 구애 없이 Redis를 빠르게 띄울 수 있다. 


본문


Redis 기본 설정

먼저 termius나 각종 툴을 사용해서 Redis 설정 파일 (기본세팅) 을 준비한다. 가장 먼저 6379 포트를 열어 주어야 하며, redis.conf의 수정이 필요했다


nano ~/redis.conf

# SSH 환경에서 위 명령어를 친 다음, 아래 내용을 추가 해주어야한다 
bind 0.0.0.0
port 6379
requirepass 비밀번호
appendonly yes

Redis 컨테이너 실행

파일을 저장한 뒤, 도커 허브에서 공식 이미지를 내려받고 설정 파일을 마운트해 컨테이너를 기동한다

sudo docker pull redis
sudo docker run --name redis-server \
  -p 6379:6379 \
  -v ~/redis.conf:/usr/local/etc/redis/redis.conf \
  -d redis redis-server /usr/local/etc/redis/redis.conf

6379 포트로 Redis가 구동되며, 앞서 우리가 설정해준 redis.conf 설정을 적용해서 컨테이너를 실행해줄 수 있다

 

주의해야할 점은 아래처럼 CI/CD (ex. 8080포트나 8081 포트로 실행되고 있는 스프링 컨테이너) 가 있다면, 동일한 네트워크로 띄워줘야 컨테이너간 통신이 가능하다

sudo docker run \
              --network lokoko-net \
              --name lokoko-${STANDBY_PORT} \
              -d -p ${STANDBY_PORT}:8080 \
              --env-file ./lokoko-dev.env \

실행되고 있는 두개의 컨테이너 (Spring + Redis)

물론 docker compose up으로 한번에 띄워주는 방식도 있지만, 우리는 2개의 컨테이너만 가동했으면 됐기에 별도의 docker compose 파일은 작성해주지 않았다


데이터베이스 연결

로컬 환경이라면 아래처럼 사용자, 비밀번호 (필요시) 정도만 추가로 입력해주면 6379 포트로 실행되고 있는 Redis 환경에 연결이 가능해진다

로컬 데이터베이스 접속 방법 (Redis)

데이터베이스의 디폴트 값은 0이라서 별도의 추가적인 설정이 없다면 0이라고 생각해주면 된다

또한 주의해야할 점은 레디스의 host는 컨테이너 이름이랑 똑같으니 필요시 변경될 수 있음을 인지해주면 좋을거같다

 

마찬가지로 배포된 환경에서의 데이터베이스도 아래처럼 0이고, Host는 배포된 서버의 퍼블릭 IPv4 주소라고 생각해주면 된다

Host 52.79.208.129
Port 6379
Authentication 비밀번호(있을 경우)
Database 0

배포된 서버 redis와 로컬 redis 데이터베이스 (리프레시 토큰 관리)


결론

해당 내용처럼 도커로 경량화해서 Redis와 같은 여러 다른 서비스들을 띄우는게 리소스 측면에서나 유지보수 측면에서나 장점이 있어, 도커로 운영되는 스프링 환경에서 많이 사용되는 걸로 알고있고 많이 활용하고 있었다

이번 포스팅에서의 중요한 내용은 도커 네트워크 설정이나,  Redis는 도커 컨테이너로 운영할 때 spring.redis.host=localhost로 설정하여 로컬 호스트에 연결해주고, 스프링과 Redis를 모두 도커 컨테이너로 관리할 때는 도커 네트워크 상의 서비스 이름(ex. redis)을 호스트로 지정해야만 서로를 DNS로 해석해 통신할 수 있다는 점이 핵심이라고 생각한다

실무에서는 보안 설정이나 maxmemory와 같은 메모리 상한을 설정이나, RDB 스냅샷 기반 백업 시스템 구축 등등의 여러 상황들을 고려해서 고도화가 진행된다고 봐주면 된다

 

사실 엄청 간단한 내용의 포스팅이지만, 도커와 관련된 내용은 다른 서비스들을 띄울때도 적용되는 내용이라 추후에 도커 파일을 활용해서fast API를 실행해 8080 포트(Spring 서버)로 실행된 컨테이너와 파이썬 컨테이너를 동시에 구동했던 내용으로 추후 포스팅을 작성해보려한다

 

 

참고한 자료

https://docs.spring.io/spring-data/redis/docs/current/reference/html/

https://redis.io/docs/management/security/

 

 

'DevOps > Docker' 카테고리의 다른 글

도커 스토리지와 볼륨 (DevOps)  (1) 2025.06.13
도커 네트워크, 실습 (DevOps)  (0) 2025.05.26
클라우드 네이티브 애플리케이션 + LEAFY 실습 (DevOps)  (0) 2025.05.11
이미지 레지스트리와 빌드 (DevOps)  (0) 2025.05.11
Docker 이미지와 컨테이너 (DevOps)  (1) 2025.05.11
'DevOps/Docker' 카테고리의 다른 글
  • 도커 스토리지와 볼륨 (DevOps)
  • 도커 네트워크, 실습 (DevOps)
  • 클라우드 네이티브 애플리케이션 + LEAFY 실습 (DevOps)
  • 이미지 레지스트리와 빌드 (DevOps)
huncozyboy
huncozyboy
이지훈
  • huncozyboy
    열정을 기록하기
    huncozyboy
  • 전체
    오늘
    어제
    • 분류 전체보기 (63)
      • Spring (26)
        • JWT (3)
        • 무한 스크롤 (1)
        • 매칭 로직 (2)
        • OAuth (4)
        • 자동화 (1)
        • 캐싱 (1)
        • AOP (2)
        • Swagger (1)
        • S3 (1)
        • CORS (1)
        • Spring Retry (0)
        • Webhook (2)
        • Grapheme Cluster (1)
        • 연관관계 (1)
        • CS 개념 (5)
      • DevOps (13)
        • 스왑 메모리 (1)
        • Blue Green (2)
        • Docker (7)
        • Route 53 (1)
        • 리버스 프록시 (2)
      • AI (2)
        • Claude Code (1)
        • Copilot (1)
      • CS (4)
        • JAVA (4)
      • Github (1)
        • Conflict (1)
      • Python (4)
        • Langchain (3)
        • Crawling (1)
      • 일상 (3)
        • 회고록 (1)
      • 알고리즘 (10)
        • 투포인터 (0)
        • 슬라이딩 윈도우 (0)
        • 정렬 (0)
        • 이분 탐색 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    도커
    알고리즘
    https
    백준
    DevOps
    코딩테스트
    aws
    Docker
    redis
    코테
    java
    LangChain
    Spring
    프로그래머스
    JWT
    OAuth
    자바
    수도코드
    EC2
    스프링
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
huncozyboy
도커로 레디스 띄워서 스프링 컨테이너랑 통신하기 (DevOps)
상단으로

티스토리툴바