The irods_audit_elk_stack image has RabbitMQ user named test added to it when the when the image is built. The Dockerfile uses rabbitmqctl to add the user to a temporarily running RabbitMQ broker. Unfortunately, this user doesn't exist (isn't accessible?) from a container instantiated from this image.
RabbitMQ persists its data, like users, keyed to the its server's node name. By default, the node name is rabbitmq@$(hostname). When the test user is created and persisted during build time, the host name is something random, and very likely different from the host name of a container launched from the image. This causes the RabbitMQ broker running in the container to not know about the test user that was created when the image was built.
Fortunately, the node name is configurable using the NODENAME parameter in the file /etc/rabbitmq/rabbitmq-env.conf, If NODENAME is set in this file with the host name being localhost, e.g., NODENAME=rabbitmq@localhost, prior to rabbitmq-server being started during the image build, the node name will be rabbitmq@localhost when test user is created. When the container is started, the node name will be the same, and the broker will know about test user.
Here's a modified version of the RabbitMQ configuration command that sets the node name to localhost.
# Install RabbitMQ plugins and create administrator account
RUN rabbitmq-plugins enable \
rabbitmq_amqp1_0 \
rabbitmq_management && \
echo 'NODENAME=rabbitmq@localhost' > /etc/rabbitmq/rabbitmq-env.conf && \
chmod 755 /etc/rabbitmq/rabbitmq-env.conf && \
/etc/init.d/rabbitmq-server start && \
rabbitmqctl add_user test test && \
rabbitmqctl set_user_tags test administrator && \
rabbitmqctl set_permissions -p / test ".*" ".*" ".*" && \
/etc/init.d/rabbitmq-server stop
The irods_audit_elk_stack image has RabbitMQ user named
test
added to it when the when the image is built. The Dockerfile usesrabbitmqctl
to add the user to a temporarily running RabbitMQ broker. Unfortunately, this user doesn't exist (isn't accessible?) from a container instantiated from this image.RabbitMQ persists its data, like users, keyed to the its server's node name. By default, the node name is
rabbitmq@$(hostname)
. When thetest
user is created and persisted during build time, the host name is something random, and very likely different from the host name of a container launched from the image. This causes the RabbitMQ broker running in the container to not know about thetest
user that was created when the image was built.Fortunately, the node name is configurable using the
NODENAME
parameter in the file/etc/rabbitmq/rabbitmq-env.conf
, IfNODENAME
is set in this file with the host name beinglocalhost
, e.g.,NODENAME=rabbitmq@localhost
, prior to rabbitmq-server being started during the image build, the node name will berabbitmq@localhost
whentest
user is created. When the container is started, the node name will be the same, and the broker will know abouttest
user.Here's a modified version of the RabbitMQ configuration command that sets the node name to localhost.