Skip to content

Docker 下如何构建包含延迟插件的 RabbitMQ 镜像

【需求】

通常情况下,RabbitMQ 的镜像是不带有延迟插件 rabbitmq_delayed_message_exchange 的,需要开发者在创建容器后进入到容器,手动安装插件,这样显得非常繁琐, 因此笔者将该插件整合至基础镜像 rabbitmq:3.12-management 中,顺带复习一下如何提交镜像,并发布到 Docker Hub。

值得一提的是,构建包含延迟插件的 RabbitMQ 镜像专业情况下是使用 Dockerfile 的形式构建,本文更多地是阐述如何提交个性化的镜像。使用如下脚本构建前,需下载好对应插件,并指定正确的路径。

关于如何使用 Dockerfile 的形式构建镜像,详见:使用 docker-compose 启动包含延迟插件的 RabbitMQ 容器服务

本文内容内容基于:Docker 教程

【解决】

首先,创建临时容器 rabbitmq-tmp

docker run -d \
--name rabbitmq-tmp \
-p 5672:5672 -p 15672:15672 \
rabbitmq:3.12-management

在这里插入图片描述

GitHub - rabbitmq-delayed-message-exchange - releases 中下载延迟插件 rabbitmq_delayed_message_exchange-3.12.0.ez ,并保存到本地。 注意:笔者使用的基础镜像是 rabbitmq:3.12-management,则需要下载 3.12.x 版本的插件。

在这里插入图片描述

将插件导入到容器:

docker cp <本地插件路径> rabbitmq-tmp:/opt/rabbitmq/plugins

在这里插入图片描述

进入临时容器,查看插件是否导入成功:

# 进入容器
docker exec -it rabbitmq-tmp bash

# 查看插件是否导入成功
cd /opt/rabbitmq/plugins
ls

在这里插入图片描述

安装并开启插件:

rabbitmq-plugins enable rabbitmq_shovel rabbitmq_shovel_management

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

在这里插入图片描述

退出临时容器,重新启动临时容器,登录控制台,发现可以交换机一栏选择 x-delayed-message 选项:

exit
docker restart rabbitmq-tmp

在这里插入图片描述在这里插入图片描述

提交镜像:

docker commit -m "commit rabbitmq container with delayed plugins" -a “hongyoudan” rabbitmq-tmp rabbitmq-management-delayed:3.12

在这里插入图片描述

登录 Docker Hub 账号:

docker login

在这里插入图片描述

添加新标签并推送镜像:

docker tag rabbitmq-management-delayed:3.12 hongyoudan/rabbitmq-management-delayed:3.12

docker push hongyoudan/rabbitmq-management-delayed:3.12

在这里插入图片描述

在 Docker Hub 仓库中可以看到刚刚推送的镜像:

在这里插入图片描述

至此,所有工作结束,可以删除临时容器以及其他一切文件,也可以再跑一次测试一下是否安装成功,笔者这边就不提供步骤了。

编程洪同学服务平台是一个广泛收集编程相关内容和资源,旨在满足编程爱好者和专业开发人员的需求的网站。无论您是初学者还是经验丰富的开发者,都可以在这里找到有用的信息和资料,我们将助您提升编程技能和知识。
专业开发
高端定制
售后无忧
站内资源均为本站制作或收集于互联网等平台,如有侵权,请第一时间联系本站,敬请谅解!本站资源仅限于学习与参考,严禁用于各种非法活动,否则后果自行负责,本站概不承担!