Docker

반응형

docker-compose with Redis Container 환경 구성

들어가며,
회사에서 업무로 Redis를 Global Cache 용도로 사용 하고 있습니다. Cache 전략은 다양한 패턴이 있는데, 그 중 현재는 Cache Aside 전략으로 DB 조회 전 Cache에 동일한 Key에 해당하는 데이터가 있는지 조회 후 결과를 리턴해주는 용도로 사용 중입니다. 가장 일반적인 Cache 용도라고 보실 수 있습니다. Cache 전략에 관한 자세한 내용은 다음에 한번 다뤄 보도록 하고, 오늘은 docker-compose를 활용하여 로컬 환경에 Redis Container를 구성하는 방법에 대한 실습 과정을 공유해보겠습니다.

docker-compose file 구성

Redis docker image 6.2.8
Redis Cluster 구성
redis.conf 설정

Container properties를 먼저 보겠습니다.

  • 각 클러스터와의 연결을 위해 ports 추가,
  • Redis 환경 구성을 위해 설정한 redis.conf 파일 경로를 volumes에 추가.
  • 컨테이너 기동시 설정된 conf 파일을 로드하기 위한 Command 명령어 추가.

redis.conf 파일은 redis.io 사이트에서 설치하시는 image 버전에 맞게 다운로드 받으실 수 있습니다.
다운 받은 conf 파일에 기본적으로 port 설정과 보안, 클러스터 그리고 백업 정책 등을 아래와 같이 변경하였습니다. 이 부분에서 삽질을 많이 했네요ㅜㅜ
보안 설정의 경우 추후 Spring Boot application과 연동을 위해서는 반드시 적절한 정책으로 설정을 하셔야 합니다. Default로 설정할 경우 Redis Container는 정상적으로 생성되고 redis-cli Command를 사용하여 Redis command 테스트는 가능하지만 실제 Spring Boot application과 연동하여 개발 용도로는 사용할 수 없기 때문입니다.. 주저리주저리..했네요

redis-master:
      image: redis:6.2.8
      container_name: redis-6379
      restart: always
      ports:
        - 6379:6379
        - 6380:6380
        - 6381:6381
      volumes:
        - ./data/redis/6379:/data
        - ./data/redis.conf:/usr/local/etc/redis/redis.conf
      command: redis-server /usr/local/etc/redis/redis.conf

Redis Container 구성을 위해 yml 파일에 설정한 properties 입니다.
아래 설정한 내용은 Github에 프로젝트로 생성하였으니 Clone 하셔서 활용하셔도 좋을 거 같습니다.

version: '3'

services:
    redis-master:
      image: redis:6.2.8
      container_name: redis-6379
      restart: always
      ports:
        - 6379:6379
        - 6380:6380
        - 6381:6381
      volumes:
        - ./data/redis/6379:/data
        - ./data/redis.conf:/usr/local/etc/redis/redis.conf
      command: redis-server /usr/local/etc/redis/redis.conf

    redis-slave1:
      image: redis:6.2.8
      container_name: redis-6380
      network_mode: "service:redis-master"
      restart: always
      volumes:
        - ./data/redis/6380:/data
        - ./data/redis6380.conf:/usr/local/etc/redis/redis.conf
      command: redis-server /usr/local/etc/redis/redis.conf

    redis-slave2:
      image: redis:6.2.8
      container_name: redis-6381
      network_mode: "service:redis-master"
      restart: always
      volumes:
        - ./data/redis/6381:/data
        - ./data/redis6381.conf:/usr/local/etc/redis/redis.conf
      command: redis-server /usr/local/etc/redis/redis.conf

    redis-cluster-entry:
      image: redis:6.2.8
      container_name: redis-cluster-entry
      network_mode: "service:redis-master"
      command: redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 --cluster-yes
      depends_on:
        - redis-master
        - redis-slave1
        - redis-slave2

update 중....

반응형
반응형

Docker 삭제하기

삭제 스크립트를 받아 삭제하는 과정도 있었지만, 아래와 같이 커맨드로 깔끔하게 삭제 후 재 설치하였습니다. 한번에 실행하기실..

Docker 설치되어 있는 아래 각 폴더를 삭제합니다.

sudo rm -Rf /Applications/Docker.app
sudo rm -f /usr/local/bin/docker
sudo rm -f /usr/local/bin/docker-machine
sudo rm -f /usr/local/bin/docker-compose
sudo rm -f /usr/local/bin/docker-credential-desktop
sudo rm -f /usr/local/bin/docker-credential-ecr-login
sudo rm -f /usr/local/bin/docker-credential-osxkeychain
sudo rm -Rf ~/.docker
sudo rm -Rf ~/Library/Containers/com.docker.docker
sudo rm -Rf ~/Library/Application\ Support/Docker\ Desktop
sudo rm -Rf ~/Library/Group\ Containers/group.com.docker
sudo rm -f ~/Library/HTTPStorages/com.docker.docker.binarycookies
sudo rm -f /Library/PrivilegedHelperTools/com.docker.vmnetd
sudo rm -f /Library/LaunchDaemons/com.docker.vmnetd.plist
sudo rm -Rf ~/Library/Logs/Docker\ Desktop
sudo rm -Rf /usr/local/lib/docker
sudo rm -f ~/Library/Preferences/com.docker.docker.plist
sudo rm -Rf ~/Library/Saved\ Application\ State/com.electron.docker-frontend.savedState
sudo rm -f ~/Library/Preferences/com.electron.docker-frontend.plist

 

오늘은 Mac 환경에서 Docker 삭제하는 방법에 대하여 정리해 보았습니다.

반응형

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

[Docker] Mac에서 Docker 설치하기 (feat.Homebrew)  (0) 2023.01.10

+ Recent posts

반응형