Open urkl opened 5 years ago
I created Dockerfile for building and enabling plugins with this Dockerfile:
FROM rabbitmq:3.7-management
COPY plugins $RABBITMQ_HOME/plugins
RUN rabbitmq-plugins enable rabbitmq_message_deduplication
Now everything works as it should inside docker with this great plugin.
I am no Docker guru but I suspect the issue is in here:
volumes:
- ./enabled_plugins:/etc/rabbitmq/enabled_plugins
- ./plugins:/usr/lib/rabbitmq/plugins
The ./
path might not be correctly recognised and therefore neither the plugins folder nor the enabled_plugins
file are correctly exposed within the container.
What I use in my docker-compose.yml
files is usually the following.
volumes:
- $PWD/config:/etc/rabbitmq/
- $PWD/plugins:/usr/lib/rabbitmq/plugins/
This work for me:
version: "2.0"
services:
rabbitmq:
image: rabbitmq:3.7.5-management
container_name: rabbitmq
hostname: rabbitmq
environment:
- RABBITMQ_PLUGINS_DIR=/my/plugins:/plugins
volumes:
- ./rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf
- ./enabled_plugins:/etc/rabbitmq/enabled_plugins
- ./advanced.config:/etc/rabbitmq/advanced.config
- /var/docker_data/rabbitmq/rabbitmqdata:/var/lib/rabbitmq
- ./plugins/:/my/plugins
ports:
- "15672:15672"
- "5672:5672"
restart: always
My approach for local dev:
#docker/rabbitmq/Dockerfile
FROM rabbitmq:3.8.2-management
ADD https://github.com/noxdafox/rabbitmq-message-deduplication/releases/download/0.4.5/elixir-1.8.2.ez /opt/rabbitmq/plugins/
ADD https://github.com/noxdafox/rabbitmq-message-deduplication/releases/download/0.4.5/rabbitmq_message_deduplication-v3.8.x_0.4.5.ez /opt/rabbitmq/plugins/
RUN chown rabbitmq:rabbitmq /opt/rabbitmq/plugins/*.ez \
&& rabbitmq-plugins enable --offline rabbitmq_message_deduplication
version: '3.7'
services:
rabbitmq:
build:
context: docker/rabbitmq
Much simpler than messing around with volumes, especially since this image will be needed in production :+1:
@Ocramius ' approach not working on rabbitMQ 3.11.2, which makes me think the whole plug-in is outdated.
Attached docker compose logs in the following file: stack_trace.txt
Main issue:
Failed to enable plugin "elixir": it may have been built with an incompatible (more recent?) version of Erlang
The plugin is not outdated. As the error suggest, your version of Erlang is too old compared to the one that was used to build the elixir
package. Most likely the same issue will happen with the plugin itself.
Either you update your Erlang version to a more recent one or you compile the plugin with the Erlang version you intend to use.
Hi. Thanks for great plugin.
Can somebody point me out, what am I missing here. This is my docker compose file:
Plugins are in .plugins directory, and enabled_plugins has the:
[rabbitmq_management, rabbitmq_message_deduplication].
Message deduplication plugin is just not installed after running this service. Plugins are accessible inside container and enabled plugins file is on right path.