我正在使用rabbitmq:3-management
,但是它缺少我需要的插件rabbitmq_delayed_message_exchange
。
如果镜像中没有可用的插件,我该如何启用此插件?
我正在使用rabbitmq:3-management
,但是它缺少我需要的插件rabbitmq_delayed_message_exchange
。
如果镜像中没有可用的插件,我该如何启用此插件?
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
根据https://hub.docker.com/_/rabbitmq,似乎还有第二种选择没有被提及。
启用插件
[已接受的答案...]
您还可以将文件挂载到
/etc/rabbitmq/enabled_plugins
,其中包含以句点结尾的 erlang 原子列表。例如,
enabled_plugins
文件:免责声明:我还没有尝试过。[rabbitmq_federation_management,rabbitmq_management,rabbitmq_mqtt,rabbitmq_stomp].
我来更新一下被接受的答案。你可以将下载的插件复制到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 Compose:
docker-compose up
这是我在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
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
[rabbitmq_management, rabbitmq_message_deduplication].
然后将您需要的 .ez-VERSION 插件下载到 plugins 文件夹中(位于 "rabbit" 文件夹内)。
例如:https://github.com/noxdafox/rabbitmq-message-deduplication/releases
如果您已经有一个正在运行的容器,那么只需运行以下命令:
docker exec -it NameOfContainer bash
在我的情况下,我需要启用 rabbitmq_jms_topic_exchange
rabbitmq-plugins enable rabbitmq_jms_topic_exchange
只需从官方位置获取插件,我建议使用下一个Dockerfile
FROM rabbitmq:3.10-management-alpine
RUN apk --no-cache add curl
RUN curl -L https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/3.10.2/rabbitmq_delayed_message_exchange-3.10.2.ez > rabbitmq_delayed_message_exchange-3.10.2.ez && \
mv rabbitmq_delayed_message_exchange-3.10.2.ez plugins/
RUN rabbitmq-plugins enable rabbitmq_delayed_message_exchange
希望能对你有所帮助!
rabbimq:3-management
作为基础,创建自己的Docker镜像并安装插件? - Urosh T.