Docker运行RabbitMQ
拉取镜像
可以先使用docker search 命令查找相关镜像
docker search rabbitmq |
查找结果如下:

官方的镜像会在后面的OFFICIAL下发显示[OK]
我们使用docker pull 命令将这个镜像拉取下来
docker pull rabbitmq |
可以通过docker images 命令查看拉取完成后的镜像

可以看到已经有一个rabbitmq的镜像
启动容器
运行docker run 命令启动rabbitmq
docker run -i -t -d -p5672:5672 -p15672:15672 --name rabbit rabbitmq |
可以在运行容器时指定用户以及主机名,如下,之后可以直接使用admin用户登录
docker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -e RABBITMQ_DEFAULT_VHOST=my_vhost -p 15672:15672 -p 5672:5672 rabbitmq |
–hostname 主机名 (RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名)
–name 指定容器名
-e 设置环境变量
RABBITMQ_DEFAULT_USER 默认用户名
RABBITMQ_DEFAULT_PASS用户的密码
RABBITMQ_DEFAULT_VHOST 虚拟主机名 my_vhost,不设置的话默认是/
设置web控制台
为了能够通过web控制台管理,需要进入容器中进行设置
进入容器
docker exec -it rabbitmq bash |
运行rabbitmq管理插件,进入/etc/rabbitmq/目录
rabbitmq-plugins enable rabbitmq_management |
然后可以通过 http://ip:15672
访问控制台,需要打开服务器安全组的15672端口

登录后可以看到控制台,可以查看相关信息

添加用户
如果需要继续添加用户,可以使用rabbitmqctl命令添加用户,添加用户同样需要在容器中进行操作
新建用户
rabbitmqctl add_user [用户名] [密码]
rabbitmqctl add_user guest guest |

添加成功后它会提示我们,不要忘记给用户授权
用户授权以及设置身份tag
授权
rabbitmqctl set_permissions -p [虚拟主机名] [用户名] conf writeread
conf:表示用于匹配用户在哪些资源上拥有可配置权限的正则表达式,可配置指的是队列和交换器的创建及删除之类的操作
write:表示用于匹配用户在哪些资源上拥有可写(指发布消息)权限的正则表达式
read:表示用于匹配用户在哪些资源上拥有可读(指消息有关的操作,如读取消息、清空队列等)权限的正则表达式
rabbitmqctl set_permissions -p my_vhost mhlevel “.*” “.*” “.*”
设置身份tag
rabbitmqctl set_user_tags [用户名] [tag]
rabbitmqctl set_user_tags guest administrator |

解决Management API returned status code 500

进入docker 容器
docker exec -it rabbitmq bash |
进入/etc/rabbitmq/conf.d 目录
cd /etc/rabbitmq/conf.d |
执行
echo management_agent.disable_metrics_collector = false > management_agent.disable_metrics_collector.conf |
然后刷新控制台
参考资料
- 本文作者: Naskete
- 本文链接: https://Naskete.github.io/2022/08/30/essay/Docker运行RabbitMQ/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!