반응형
지인과 서버 관련 얘기 중 도커 레디스 관련 얘기가 나와 서로가 겪은 상황들을 공유하다 필요하다 싶어 간략히 적어 봅니다.
줄바꿈 포함
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
반응형