如何将插件添加到RabbitMQ Docker镜像?

atk*_*yla 7 rabbitmq docker

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

如果该插件在映像中不可用,如何启用它?

Sar*_*oev 12

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

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

1. 准备自定义镜像:

文件

  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
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

rabbitmq:
  image: rabbitmq-custom
  ports:
    - "5672:5672"
    - "15672:15672"
Run Code Online (Sandbox Code Playgroud)

2. 构建镜像

docker build -t rabbitmq-custom .
Run Code Online (Sandbox Code Playgroud)

3. 运行docker composer:

docker-compose up
Run Code Online (Sandbox Code Playgroud)


cde*_*dev 12

这就是我在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
Run Code Online (Sandbox Code Playgroud)


atk*_*yla 9

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
Run Code Online (Sandbox Code Playgroud)


Vin*_* C. 9

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

启用插件

[接受的答案...]

您还可以将文件安装在/etc/rabbitmq/enabled_plugins内容为以句点结尾的原子的 erlang 列表中。

例子 enabled_plugins

[rabbitmq_federation_management,rabbitmq_management,rabbitmq_mqtt,rabbitmq_stomp].
Run Code Online (Sandbox Code Playgroud)

免责声明:我还没有尝试过。

  • 我认为这个解决方案仅适用于默认情况下rabbitmq中包含的插件。这个问题中的插件不是这里列出的核心插件之一:https://www.rabbitmq.com/plugins.html (12认同)

小智 9

希望这也有帮助:

rabbitmq3:
  container_name: "rabbitmq"
  image: rabbitmq:3.8-management-alpine
  environment:
    - RABBITMQ_DEFAULT_USER=local
    - RABBITMQ_DEFAULT_PASS=localpwd
    - RABBITMQ_PLUGINS_DIR=/opt/rabbitmq/plugins:/usr/lib/rabbitmq/plugins
  ports:
    # AMQP protocol port
    - '5672:5672'
    # HTTP management UI
    - '15672:15672'
  volumes:
    - ./rabbit/enabled_plugins:/etc/rabbitmq/enabled_plugins
    - ./rabbit/plugins:/usr/lib/rabbitmq/plugins
Run Code Online (Sandbox Code Playgroud)

在 docker-compose 的同一路径中添加一个“rabbit”文件夹,其中包含一个名为enabled_plugins的文件

[rabbitmq_management, rabbitmq_message_deduplication].
Run Code Online (Sandbox Code Playgroud)

然后在插件文件夹(“rabbit”文件夹内)中下载您需要的插件 .ez-VERSION。

https://github.com/noxdafox/rabbitmq-message-deduplication/releases