Docker rabbitmq 사용시 데이터 보존방법

Hwangro Lee
Sep 8, 2021

--

로컬에서 개발용 인프라를 구축할때 도커를 많이 사용한다. RabbitMQ를 사용 중 재실행을 했는데 기존에 만들어 둔 Exchange, Queue 등 정보가 초기화되는 일이 발생했다.

도커는 실행할때마다 매번 Exchange, Queue, Routing key 를 설정하기란 귀찮고 개발자스럽지 않다. 분명 누군가 같은 이슈를 가지고 스택오버플로 올려두었으리라 믿고 찾기 시작했다.

docker-library/docker 에 이슈를 남겨둔 사람이 있었다. 감사합니다.

RabbitMQ 는 mnesia 디렉토리에 있는 폴더 름을 호스트 이름으로 사용하고 있다고 합니다. 그러니 도커를 실행할때 hostname을 넘겨서 이전에 사용하던 데이터를 사용하도록 해야합니다.

rabbitmq:
image: rabbitmq:${RABBITMQ_VERSION}-management
restart: always
hostname: my-rabbit
environment:
- RABBITMQ_DEFAULT_USER=${RABBITMQ_USER}
- RABBITMQ_DEFAULT_PASS=${RABBITMQ_PASSWORD}
ports:
- ${RABBITMQ_PORT}:${RABBITMQ_PORT}
- 15672:15672 # web port
volumes:
- ./data/rabbitmq/logs:/var/log/rabbitmq/
- ./data/rabbitmq/data:/var/lib/rabbitmq/

--

--