Docker部署RabbitMQ

在此记录一下 Docker 部署 RabbitMQ 的过程,完整脚本见文章末尾。
直接在宿主机上安装 RabbitMQ 还是太麻烦了,还要安装适合 RabbitMQ 指定版本的 Erlang,还是直接用 docker 方便。
先进入 https://hub.docker.com/_/rabbitmq 选择你需要的 RabbitMQ 版本,例如我选择了 3.13.7-management

然后再确定一下你的 RabbitMQ 的数据映射目录在哪个位置,例如我希望部署在 /app/rabbitmq下,数据持久化的目录为 /app/rabbitmq/data,如果没有数据持久化这样的需求那可以略过;

bash 复制代码
#!/bin/bash

docker rm -f rabbitmq                         #我希望每次执行都删除旧容器,如果你没有此需求可以删除这行
docker run -d \
  --name rabbitmq \                           #设置容器启动后的容器名称
  -p 5672:5672 \                              #设置映射的服务端口  : 后面不动,固定5672
  -p 15672:15672 \                            #管理面板的Web端口   : 后面不动,固定15672
  -e RABBITMQ_DEFAULT_USER=admin\             #设置默认的管理账户,如果不设置并且删除这行则默认用户名为:guest
  -e RABBITMQ_DEFAULT_PASS=123456\            #设置管理账户的密码,如果不设置并且删除这行则默认的密码为:guest
  -v /app/rabbitmq/data:/var/lib/rabbitmq \   #冒号前面为设置数据持久化目录,如果无此需求可以删除这行
  rabbitmq:3.13.7-management                  #使用的镜像

这样基本能满足大部分用户的需求。

顺便记录一下插件的安装:RabbitMQ安装后是没有延时执行的功能,我想要添加延时执行可以使用rabbitmq-delayed-message-exchange这个插件,可以在 GitHub 上下载 .ez 结尾的插件,将其上传到前面设置的映射目录/app/rabbitmq/data
执行添加插件命令并重启:

bash 复制代码
# 复制插件
docker exec -it rabbitmq cp /var/lib/rabbitmq/rabbitmq_delayed_message_exchange-3.13.0.ez /opt/rabbitmq/plugins

# 启用插件
docker exec -it rabbitmq rabbitmq-plugins enable rabbitmq_delayed_message_exchange

# 重启 RabbitMQ 服务
docker exec -it rabbitmq service rabbitmq-server restart

再次新建交换机的时候就看到了

总结

普通脚本:

bash 复制代码
#!/bin/bash

docker rm -f rabbitmq                         #我希望每次执行都删除旧容器,如果你没有此需求可以删除这行
docker run -d \
  --name rabbitmq \                           #设置容器启动后的容器名称
  -p 5672:5672 \                              #设置映射的服务端口  : 后面不动,固定5672
  -p 15672:15672 \                            #管理面板的Web端口   : 后面不动,固定15672
  -e RABBITMQ_DEFAULT_USER=admin\             #设置默认的管理账户,如果不设置并且删除这行则默认用户名为:guest
  -e RABBITMQ_DEFAULT_PASS=123456\            #设置管理账户的密码,如果不设置并且删除这行则默认的密码为:guest
  -v /app/rabbitmq/data:/var/lib/rabbitmq \   #冒号前面为设置数据持久化目录,如果无此需求可以删除这行
  rabbitmq:3.13.7-management                  #使用的镜像

部署 RabbitMQ 并且安装 rabbitmq-delayed-message-exchange插件的脚本:

bash 复制代码
#!/bin/bash

docker rm -f rabbitmq                         #我希望每次执行都删除旧容器,如果你没有此需求可以删除这行
docker run -d \
  --name rabbitmq \                           #设置容器启动后的容器名称
  -p 5672:5672 \                              #设置映射的服务端口  : 后面不动,固定5672
  -p 15672:15672 \                            #管理面板的Web端口   : 后面不动,固定15672
  -e RABBITMQ_DEFAULT_USER=admin\             #设置默认的管理账户,如果不设置并且删除这行则默认用户名为:guest
  -e RABBITMQ_DEFAULT_PASS=123456\            #设置管理账户的密码,如果不设置并且删除这行则默认的密码为:guest
  -v /app/rabbitmq/data:/var/lib/rabbitmq \   #冒号前面为设置数据持久化目录,如果无此需求可以删除这行
  rabbitmq:3.13.7-management                  #使用的镜像


# 等待 RabbitMQ 启动
sleep 20
# 复制插件
docker exec -it rabbitmq cp /var/lib/rabbitmq/rabbitmq_delayed_message_exchange-3.13.0.ez /opt/rabbitmq/plugins
# 启用插件
docker exec -it rabbitmq rabbitmq-plugins enable rabbitmq_delayed_message_exchange
# 重启 RabbitMQ 服务
docker exec -it rabbitmq service rabbitmq-server restart

== END ==

相关推荐
Lzc77415 分钟前
Linux网络的应用层协议HTTP
linux·1024程序员节·应用层协议http
susu108301891116 分钟前
FAT32/VFAT 文件系统不支持 Linux 文件权限,cp文件总是异常
linux·运维·服务器
絔离23 分钟前
Linux下查看系统启动时间、运行时间
linux·运维·服务器
七夜zippoe1 小时前
Xshell效率实战三:SSH管理秘籍——自动化脚本与宏命令进阶指南
运维·自动化·ssh
呆呆小金人1 小时前
Linux:开源时代的隐形基石
linux·1024程序员节
扶尔魔ocy1 小时前
【Linux C/C++开发】epoll模式的开源库及原生socket实现
linux·网络编程·epoll
落羽的落羽2 小时前
【Linux系统】从零掌握make与Makefile:高效自动化构建项目的工具
linux·服务器·开发语言·c++·人工智能·机器学习·1024程序员节
KevinPedri2 小时前
测试:uk8s创建监控和告警同步飞书等渠道
docker·kubernetes·云计算·1024程序员节
GIS数据转换器2 小时前
城市基础设施安全运行监管平台
大数据·运维·人工智能·物联网·安全·无人机·1024程序员节
qq_327395032 小时前
ubuntu 24.04 x86_64安装docker
docker