通过Dockerfile 安装rabbitMq

embedded/2024/10/15 16:09:25/

一、编写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 


http://www.ppmy.cn/embedded/127947.html

相关文章

一些简单的编程题(Java与C语言)

引言: 这篇文章呢,小编将会举一些简单的编程题用来帮助大家理解一下Java代码,并且与C语言做个对比,不过这篇文章所出现的题目小编不会向随缘解题系列里面那样详细的讲解每一到题,本篇文章的主要目的是帮助小编和读者们…

成都睿明智科技有限公司共创抖音电商新篇章

在当今这个数字化浪潮汹涌的时代,抖音电商以其独特的魅力迅速崛起,成为众多商家竞相追逐的新蓝海。在这片充满机遇与挑战的领域中,成都睿明智科技有限公司凭借其专业的服务、创新的策略和敏锐的市场洞察力,成为了众多商家信赖的合…

Xcode报错:Undefined symbols,Linker command failed with exit code1

这种编译报错点击Xcode左侧的小红叉这两行点击没反应,不知道具体报错原因怎么弄? 解决办法: 第一步:点周Xcode左侧工具栏的编译log日志按钮 第二步:第一步点击完Xcode左侧出现了编译历史列表,可以看到有报…

Maven(10)如何使用Maven进行多模块项目管理?

使用Maven进行多模块项目管理是一种常见的做法,它可以帮助你组织大型项目,使其结构更加清晰,便于维护和构建。以下是使用Maven创建和管理多模块项目的详细步骤: 步骤1:创建父项目 首先,创建一个空的Maven…

实验kubernetes的CPU绑定策略

CPU 管理配置 CPU 管理策略通过 kubelet 参数 --cpu-manager-policy 或 KubeletConfiguration 中的 cpuManagerPolicy 字段来指定。 支持两种策略: none:默认策略。static:允许为节点上具有某些资源特征的 Pod 赋予增强的 CPU 亲和性和独占…

如何有效进行主机加固?深信达MCK提供答案

在数字化时代,企业面临的网络安全威胁日益严峻,尤其是勒索病毒等恶意软件的攻击,给企业带来了巨大的挑战。为了有效应对这些威胁,企业需要采取全面的网络安全防护措施,其中主机加固成为了关键的一环。深信达的MCK主机加…

排队模型和贪心算法,贪心算法在算力共享排队系统中的应用

目录 排队模型和贪心算法 一、排队模型概述 二、贪心算法简介 三、排队模型与贪心算法的关系 四、实例说明 贪心算法在算力共享排队系统中的应用 贪心算法的局限性 排队模型和贪心算法 之间存在密切的关系,主要体现在排队问题的求解过程中。 一、排队模型概述 排队模…

How to list the environment variables in MySQL based on podman

有时候,我们期望系统的、完整的输出mysql中的环境变量,但是只是想看看,不想安装mysql,有没有什么好的办法呢? 其实,答案是有的。我们可以基于docker/podman来完成,这里推荐podman,示…