使用docker快速构建RabbitMQ
有时间,我们需要rabbitmq测试一下,如果按照原方案部署一个rabbitmq,比较麻烦,这个时候可以使用docker快速构建一个rabbitmq来使用。
rabbitmq:management (推荐)
我们可以通过官方的镜像rabbitmq:management来实现,如果是直接使用命令行:
# 拉取镜像
sudo docker pull rabbitmq:management
# 创建
sudo docker run -d --name rabbit -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 rabbitmq:management
# 说明
# -p 5672:5672 -p 15672:15672 端口映射,将宿主机中的端口映射进容器中,5672是AMPQ协议端口,15672是后台管理页面端口
# -e RABBITMQ_DEFAULT_USER=admin 设置后台管理登录账号
# -e RABBITMQ_DEFAULT_PASS=123456 设置后台管理登录账号的密码
运行之后就可以通过宿主机的15672端口访问后台管理了。
此外,为了方便我们的操作,我们可以采用docker-compose来管理,一个简单的docker-compose.yml如下:
version: '2'
services:
rabbit:
image: rabbitmq:management
container_name: rabbit
restart: always
expose:
- 5672
- 15672
ports:
- 5672:5672
- 15672:15672
environment:
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=123456
networks:
default:
driver: bridge
这样就可以使用docker-compose来管理了
rabbitmq:latest
有时候,我们本地已经存在一个rabbitmq的镜像了,如果不想再获取一个rabbitmq:management镜像,我们可以采用sh脚本来管理,一个rabbit.sh如下:
rabbit.sh
#!/bin/bash
container_name=rabbit # 容器名称
ampq_port=5672 # 宿主机映射的AMPQ协议端口
management_port=15672 # 宿主机映射的后端管理端口
user=admin # 创建的后台管理用户
password=123456 # 创建用户的密码
vhost=/ # 用户虚拟机
image=rabbitmq:latest # rabbitmq镜像
#停止
rabbitmq_stop(){
echo 停止容器:`sudo docker stop $container_name`
}
#启动
rabbitmq_start(){
echo 启动容器:`sudo docker start $container_name`
sleep 5 # 等待容器起来,如果时间不够,可以适当延长
plugin_exists=`sudo docker exec -i $container_name /bin/bash -c "rabbitmq-plugins list | grep '*' | grep 'rabbitmq_management '"`
if [ -z "$plugin_exists" ];then
echo 启用management:
sudo docker exec -i $container_name rabbitmq-plugins enable rabbitmq_management
echo 重启中:sudo docker restart $container_name
sleep 5 # 等待容器起来,如果时间不够,可以适当延长
echo 创建用户并授权:
sudo docker exec -i $container_name rabbitmqctl add_user $user $password
sudo docker exec -i $container_name rabbitmqctl set_user_tags $user administrator
sudo docker exec -i $container_name rabbitmqctl set_permissions --vhost $vhost $user '.*' '.*' '.*'
sudo docker exec -i $container_name /bin/bash -c "echo management_agent.disable_metrics_collector=false > /etc/rabbitmq/conf.d/management_agent.disable_metrics_collector.conf"
sudo docker restart $container_name
fi
}
#停止并移除
rabbitmq_down(){
rabbitmq_stop
echo 删除容器:`sudo docker rm $container_name`
}
#重新启动
rabbitmq_restart(){
rabbitmq_stop
rabbitmq_start
}
#查看状态
rabbitmq_status(){
sudo docker ps -a | grep rabbitmq | grep "$container_name"
}
#创建
rabbitmq_create(){
echo 创建镜像:`sudo docker create --name rabbit -p $ampq_port:5672 -p $management_port:15672 --restart always $image`
}
#创建并启动
rabbitmq_up(){
rabbitmq_create
rabbitmq_start
}
if [ ! -z "$1" ];then
rabbitmq_$1
exit 0
fi
echo "
Usage: $0 COMMAND
可用命令:
start 启动
create 创建
stop 停止
up 创建并启动
down 停止并删除
status 查看容器节点信息
restart 重新启动"
一些固定的参数,在这个文件内部配置好就行了,保存后可以进行授权可执行,再启动了
# 授权
sudo chmod +x rabbit.sh
# 启动
./rabbit.sh up
# 停止
./rabbit.sh down
# 查看帮助
./rabbit.sh
一个专注于.NetCore的技术小白