通过Dockerfile 安装rabbitMq

一、编写Dockerfile

Dockerfile 指令详细注释如下:

java 复制代码
# 使用带有管理插件的官方 RabbitMQ 镜像作为基础
FROM rabbitmq:3.9-management

# 复制自定义模板文件到 RabbitMQ 管理插件的模板目录
# 这里假设 ./users.ejs 和 ./limits.ejs 是用于自定义管理界面的模板文件
COPY ./users.ejs /opt/rabbitmq/plugins/rabbitmq_management-3.9.29/priv/www/js/tmpl
COPY ./limits.ejs /opt/rabbitmq/plugins/rabbitmq_management-3.9.29/priv/www/js/tmpl

# 设置环境变量 ACTIVEMQ_HOME,虽然这里与 RabbitMQ 无关,但保留原样
ENV ACTIVEMQ_HOME /mydocker/activemq

# 更新 apt 包列表,并安装 curl 工具,用于下载插件
RUN apt-get -o Acquire::Check-Date=false update && apt-get install -y curl

# 下载延迟消息交换插件
# 将插件下载到 RabbitMQ 的 plugins 目录下
RUN curl -L https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/3.9.0/rabbitmq_delayed_message_exchange-3.9.0.ez > $RABBITMQ_HOME/plugins/rabbitmq_delayed_message_exchange-3.9.0.ez

# 更改插件文件的所有者,确保 RabbitMQ 用户可以访问和管理插件
RUN chown rabbitmq:rabbitmq $RABBITMQ_HOME/plugins/rabbitmq_delayed_message_exchange-3.9.0.ez

# 启用延迟消息交换插件
RUN rabbitmq-plugins enable rabbitmq_delayed_message_exchange

上传Dockerfile 和自定义模版自行下载。上传到服务器

二、构建镜像

用上面Dockerfile 打包为本地镜像

注意:要在上面mydocker/rabbitMq目录下执行

java 复制代码
docker build -t my-rabbitmq .

执行结果如下:

java 复制代码
[+] Building 100.7s (12/12) FINISHED                                                                                                                                                               docker:default
 => [internal] load build definition from Dockerfile                                                                                                                                                         0.0s
 => => transferring dockerfile: 732B                                                                                                                                                                         0.0s
 => [internal] load .dockerignore                                                                                                                                                                            0.0s
 => => transferring context: 2B                                                                                                                                                                              0.0s
 => [internal] load metadata for docker.io/library/rabbitmq:3.9-management                                                                                                                                  15.3s
 => [1/7] FROM docker.io/library/rabbitmq:3.9-management@sha256:4c4b66ad5ec40b2c27943b9804d307bf31c17c8537cd0cd107236200a9cd2814                                                                             0.0s
 => [internal] load build context                                                                                                                                                                            0.0s
 => => transferring context: 61B                                                                                                                                                                             0.0s
 => CACHED [2/7] COPY ./users.ejs /opt/rabbitmq/plugins/rabbitmq_management-3.9.29/priv/www/js/tmpl                                                                                                          0.0s
 => CACHED [3/7] COPY ./limits.ejs /opt/rabbitmq/plugins/rabbitmq_management-3.9.29/priv/www/js/tmpl                                                                                                         0.0s
 => [4/7] RUN apt-get -o Acquire::Check-Date=false update && apt-get install -y curl                                                                                                                        63.0s
 => [5/7] RUN curl -L https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/3.9.0/rabbitmq_delayed_message_exchange-3.9.0.ez > /opt/rabbitmq/plugins/rabbitmq_delayed_message_ex  17.5s
 => [6/7] RUN chown rabbitmq:rabbitmq /opt/rabbitmq/plugins/rabbitmq_delayed_message_exchange-3.9.0.ez                                                                                                       0.3s 
 => [7/7] RUN rabbitmq-plugins enable rabbitmq_delayed_message_exchange                                                                                                                                      3.3s 
 => exporting to image                                                                                                                                                                                       1.2s 
 => => exporting layers                                                                                                                                                                                      1.1s 
 => => writing image sha256:5580b8387db966233515e6582f57d04b07014cd9280d8593839903932dc0cffa                                                                                                                 0.0s 
 => => naming to docker.io/library/my-rabbitmq                                                

查看打包好的镜像:my-rabbitmq

java 复制代码
[root@syf rabbitMq]# docker images
REPOSITORY                                             TAG       IMAGE ID       CREATED          SIZE
my-rabbitmq                                            latest    5580b8387db9   45 seconds ago   319MB
dockertest                                             1.0       7f4faa206171   9 months ago     760MB
centosjava8                                            1.0       b66e5037b732   9 months ago     1.27GB
nginx                                                  latest    605c77e624dd   2 years ago      141MB
redis                                                  6.2.6     7614ae9453d1   2 years ago      113MB
mysql                                                  5.7       c20987f18b13   2 years ago      448MB
portainer/portainer-ce                                 2.9.1     bc46de77a3ff   2 years ago      252MB
registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g   latest    3fa112fd3642   8 years ago      6.85GB

三、运行镜像

运行上面打包好的镜像

java 复制代码
docker run -d -p 15672:15672 -p 5672:5672 \
	-e RABBITMQ_DEFAULT_VHOST=my_vhost  \
	-e RABBITMQ_DEFAULT_USER=admin \
	-e RABBITMQ_DEFAULT_PASS=admin \
	--hostname myRabbit \
	--name rabbitmq \
	my-rabbitmq

参数说明:

  • -d:表示在后台运行容器;
  • -p:将容器的端口 5672(应用访问端口)和 15672 (控制台Web端口号)映射到主机中;
  • -e:指定环境变量:
  • RABBITMQ_DEFAULT_VHOST:默认虚拟机名;
  • RABBITMQ_DEFAULT_USER:默认的用户名;
  • RABBITMQ_DEFAULT_PASS:默认的用户密码;
  • --hostname:指定主机名(RabbitMQ 的一个重要注意事项是它根据所谓的 节点名称 存储数据,默认为主机名);
  • --name rabbitmq :设置容器名称;
  • my-rabbitmq:容器使用的镜像名称;

设置rabbitmq 自动启

java 复制代码
docker update rabbitmq --restart=always

四、启动 rabbitmq_management

rabbitmq_management 是 RabbitMQ 的一个插件,它提供了对RabbitMQ 服务器的管理界面和 HTTP API。通过这个插件,用户可以:

  1. 监控 队列、交换机、连接等的状态。
  2. 管理 创建、删除队列、绑定、用户权限等。
  3. 配置 查看配置信息,进行一些配置上的调整。
  4. 统计信息 获取详细的统计信息,如消息的发送速率、队列深度等。

方法一:

java 复制代码
docker exec -it rabbitmq /bin/bash
---------------------------------
 rabbitmq-plugins enable rabbitmq_management

方法二::

java 复制代码
docker exec -it rabbitmq rabbitmq-plugins enable rabbitmq_management

五、测试访问 RabbitMQ

浏览器输入地址:http://ip:15672 即可访问后台管理页面,如下:

注意: 由于我在启动容器的时候设置了默认的用户名 (Admin) 和密码 (Admin),所以需要使用设置的用户名和密码进行登录。

登录进去后的管理页面如下:

提示: 如果无法访问可以尝试开启防火墙 15672 端口:

java 复制代码
firewall-cmd --zone=public --add-port=15672/tcp --permanent        
firewall-cmd --reload 
相关推荐
计算机程序员小杨22 分钟前
计算机专业的你懂的:大数据毕设就选贵州茅台股票分析系统准没错|计算机毕业设计|数据可视化|数据分析
java·大数据
y1y1z26 分钟前
EasyExcel篇
java·excel
DokiDoki之父1 小时前
多线程—飞机大战排行榜功能(2.0版本)
android·java·开发语言
高山上有一只小老虎1 小时前
走方格的方案数
java·算法
whatever who cares1 小时前
Java 中表示数据集的常用集合类
java·开发语言
JavaArchJourney2 小时前
TreeMap 源码分析
java
whitepure2 小时前
万字详解Java中的IO及序列化
java·后端
还梦呦2 小时前
2025年09月计算机二级Java选择题每日一练——第一期
java·开发语言
与火星的孩子对话2 小时前
Unity高级开发:反射原理深入解析与实践指南 C#
java·unity·c#·游戏引擎·lucene·反射
花开富贵ii2 小时前
代码随想录算法训练营四十六天|图论part04
java·数据结构·算法·图论