본문 바로가기

Docker

Docker Redis 세팅(윈도우)

반응형

지인과 서버 관련 얘기 중 도커 레디스 관련 얘기가 나와 서로가 겪은 상황들을 공유하다 필요하다 싶어 간략히 적어 봅니다.

 

줄바꿈 포함

docker run -d \
  --name redis \
  -p 6379:6379 \
  -v C:\redis:/data \
  --restart=unless-stopped \
  redis:latest \
  redis-server --appendonly yes --requirepass 비밀번호

 

줄바꿈 없이

docker run --name redis -v C:\redis:/data -p 6379:6379 --restart=unless-stopped -d redis:latest redis-server --appendonly yes --requirepass 비밀번호

 

  • --name redis : 컨테이너 이름을 redis로 설정
  • -v C:\redis:/data : Redis 데이터를 저장할 볼륨을 C:\redis로 설정해 컨테이너 재시작 시 데이터가 유지되도록 설정
  • --restart=unless-stopped : 컨테이너가 비정상적으로 종료되더라도 자동으로 다시 시작되도록 설정
  • --requirepass: Redis : 비밀번호를 설정
  • redis-server --appendonly yes : Redis의 지속성을 위해 AOF(Append-Only File) 모드를 활성화

비밀번호와 최대 메모리, 메모리가 가득찬 후 대응 방식 등 다양한 옵션을 지정하고 싶다면 redis.conf 파일을 만들고 data 폴더와 비슷하게 볼륨을 지정해주면 됩니다.

-v C:\redis\conf\redis.conf:/usr/local/etc/redis/redis.conf

필자가 pull 받은 레디스 이미지는 "Docker Official Image"로 다른 이미지를 받았다면 경로가 다를 수 있습니다.

그 경우 문서를 보면서 찾는것이 옳습니다.


또한 예를 들어 서비스에 동작 순서가 중요할 수 있습니다.

Spring boot -> redis : 오류
redis -> Spring boot : 정상

위와 같은 상황에서는 docker-compose.yml을 작성하여 run 순서를 보장하는 것이 좋습니다.

docker-compose.yml은 굳이 프로젝트 폴더가 아니더라도 실행이 가능하니 따로 관리하는 것 또한 좋습니다.

version: "3.9"
services:
  redis:
    image: redis:latest
    container_name: redis
    ports:
      - "6379:6379"
    volumes:
      - C:\redis:/data
    command: ["redis-server", "--appendonly", "yes", "--requirepass", "비밀번호"]
    restart: unless-stopped

  springboot-app:
  	~
    depends_on:
      - redis
반응형