【问题标题】:How to add plugin to RabbitMQ docker image?如何将插件添加到 RabbitMQ docker 映像?
【发布时间】:2018-10-15 14:41:03
【问题描述】:

我正在使用来自https://hub.docker.com/_/rabbitmq/rabbitmq:3-management,但是它缺少我需要rabbitmq_delayed_message_exchange 的插件。

如果图片中没有这个插件,我该如何启用它?

【问题讨论】:

  • 您是否考虑过使用rabbimq:3-management 作为基础创建自己的 Docker 映像并仅安装插件?
  • @UroshT。谢谢!我以前从未这样做过,但我试了一下并发布了答案。它似乎工作。我的自定义 Docker 映像看起来如何?我发现我必须安装 curl 和 unzip 等基础知识,这很奇怪。
  • “我觉得很奇怪,我必须安装 curl/unzip 之类的基本功能” - 大多数图像都不需要它们,那么为什么要包含它们?
  • @SergioTulentsev 好吧,安装 RabbitMQ 插件好像我需要 curl 来下载它,然后我必须解压缩它才能获取 .ez 文件。
  • @kayla 但他们不需要从基础映像运行 rabbitmq,所以难怪他们不在那里。

标签: docker rabbitmq


【解决方案1】:
FROM rabbitmq:3.7-management

RUN apt-get update && \
apt-get install -y curl unzip

RUN curl https://dl.bintray.com/rabbitmq/community-plugins/3.7.x/rabbitmq_delayed_message_exchange/rabbitmq_delayed_message_exchange-20171201-3.7.x.zip > rabbitmq_delayed_message_exchange-20171201-3.7.x.zip && \
unzip rabbitmq_delayed_message_exchange-20171201-3.7.x.zip && \
rm -f rabbitmq_delayed_message_exchange-20171201-3.7.x.zip && \
mv rabbitmq_delayed_message_exchange-20171201-3.7.x.ez plugins/

RUN rabbitmq-plugins enable rabbitmq_delayed_message_exchange

【讨论】:

【解决方案2】:

只是更新接受的答案。您可以将下载的插件复制到rabbitmq镜像中并安装。

插件下载链接:https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases

1.准备自定义图片:

Dockerfile

  FROM rabbitmq:3.7.18-management
  COPY ./rabbitmq_delayed_message_exchange-20171201-3.7.x.ez /opt/rabbitmq/plugins/
  RUN rabbitmq-plugins enable rabbitmq_delayed_message_exchange

docker-compose.yml

rabbitmq:
  image: rabbitmq-custom
  ports:
    - "5672:5672"
    - "15672:15672"

2。构建映像

docker build -t rabbitmq-custom .

3.运行 docker composer:

docker-compose up

【讨论】:

    【解决方案3】:

    根据https://hub.docker.com/_/rabbitmq 看来,这里还没有提到第二种选择。 我觉得接受的答案是最好的解决方案,因为它允许进行更多调整,但可能更喜欢另一种方法:

    启用插件

    [已接受的答案...]

    您还可以将文件挂载到/etc/rabbitmq/enabled_plugins,其内容为以句点结尾的原子的 erlang 列表。

    示例enabled_plugins

    [rabbitmq_federation_management,rabbitmq_management,rabbitmq_mqtt,rabbitmq_stomp].
    

    免责声明:我还没试过。

    【讨论】:

    • 这确实应该被标记为最有效的解决方案。
    • 这应该是公认的答案。谢谢!
    • 我认为这个解决方案只适用于rabbitmq默认包含的插件。这个问题中的插件不是这里列出的核心插件之一:rabbitmq.com/plugins.html
    【解决方案4】:

    这就是我在 3.9 版本中实现的方式

    FROM rabbitmq:3.9-management
    
    COPY rabbitmq.conf /etc/rabbitmq/rabbitmq.conf
    
    RUN apt-get -o Acquire::Check-Date=false update && apt-get install -y curl
    
    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
    
    RUN chown rabbitmq:rabbitmq $RABBITMQ_HOME/plugins/rabbitmq_delayed_message_exchange-3.9.0.ez
    
    RUN rabbitmq-plugins enable rabbitmq_delayed_message_exchange
    

    【讨论】:

      【解决方案5】:

      如果你已经有一个正在运行的容器而不是简单地运行

      docker exec -it NameOfContainer bash

      在我的情况下,我需要启用 rabbitmq_jms_topic_exchange

      rabbitmq-plugins 启用 rabbitmq_jms_topic_exchange

      【讨论】:

        猜你喜欢
        • 2020-03-31
        • 2020-01-31
        • 1970-01-01
        • 2018-09-23
        • 2020-01-21
        • 1970-01-01
        • 1970-01-01
        • 2021-12-11
        • 1970-01-01
        相关资源
        最近更新 更多