version: '3'
services:
rabbitmq:
image: rabbitmq:3-management-alpine
container_name: rabbitmq-stream
volumes:
- ./.docker/rabbitmq/etc/:/etc/rabbitmq/
- ./.docker/rabbitmq/data/:/var/lib/rabbitmq/
- ./.docker/rabbitmq/logs/:/var/log/rabbitmq/
ports:
- "5672:5672"
- "15672:15672"
environment:
RABBITMQ_ERLANG_COOKIE: "RabbitMQ-My-Cookies"
RABBITMQ_DEFAULT_USER: "admin"
RABBITMQ_DEFAULT_PASS: "rabbitpassword"
docker-compose.yml
파일은 위와 같다. 옵션별로 무엇을 의미하는지 알아보자
image: rabbitmq:3-management-alpine
rabbitmq 이미지중에 3-management-alpine
버전을 선택하겠다는 의미이다. 3-management-alpine
버전은 두가지 특징이 있다
management
: 관리자 UI를 사용할 수 있게 해주는 management plugin
이 설치되어 있는 이미지이다. 기본 관리자 username/passwd 는 guest/guest 이다alpine
: 경량 리눅스 배포판 이미지, 사용하는 이유는 링크에 자세히 설명되어 있다.volumes:
- ./.docker/rabbitmq/etc/:/etc/rabbitmq/
- ./.docker/rabbitmq/data/:/var/lib/rabbitmq/
- ./.docker/rabbitmq/logs/:/var/log/rabbitmq/
volumes
는 도커 컨테이너는 실행 후 컨테이너를 삭제하면 존재하던 데이터가 모두 사라지게 되기 때문에 마운트를 해주는데, 이에 필요한 옵션이다.
만약 ./.docker/rabbitmq/etc/:/etc/rabbitmq/
이라면 로컬의 ./.docker/rabbitmq/etc/
디렉토리를 컨테이너의 /etc/rabbitmq/
디렉토리와 마운트 하겠다는 의미이다.
한줄 한줄 마운트한 이유를 설명하자면
./.docker/rabbitmq/etc/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf
: RabbitMQ configuration 파일을 설정하기 위함./.docker/rabbitmq/data/:/var/lib/rabbitmq/
: RabbitMQ 데이터에 접근하기 위함./.docker/rabbitmq/logs/:/var/log/rabbitmq/
: RabbitMQ 로그에 접근하기 위함environment:
RABBITMQ_ERLANG_COOKIE: "RabbitMQ-My-Cookies"
RABBITMQ_DEFAULT_USER: "admin"
RABBITMQ_DEFAULT_PASS: "rabbitpassword"
컨테이너 내부의 환경 변수를 설정하는 옵션이다.
RABBITMQ_ERLANG_COOKIE
: RabbitMQ 클러스터를 구성할 때 노드끼리 동일하게 맞춰줘야 하는 값RABBITMQ_DEFAULT_USER
: management UI 에서 로그인 usernameRABBITMQ_DEFAULT_PASS
: management UI 에서 로그인 passwordhttps://zgadzaj.com/development/docker/docker-compose/containers/rabbitmq