启动 RabbitMQ Docker 容器时如何添加初始用户? [英] How to add initial users when starting a RabbitMQ Docker container?

查看:18
本文介绍了启动 RabbitMQ Docker 容器时如何添加初始用户?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

目前我正在使用来自 DockerHub 的默认 RabbitMQ 映像启动 RabbitMQ Docker 容器.使用以下命令.

Currently i am starting RabbitMQ Docker container using the default RabbitMQ image from DockerHub. Using the following commands.

docker run --restart=always 
-d 
-e RABBITMQ_NODENAME=rabbitmq 
-v /opt/docker/rabbitmq/data:/var/lib/rabbitmq/mnesia/rabbitmq 
-p 5672:5672 
-p 15672:15672 
--name rabbitmq rabbitmq:3-management

我需要在第一次启动映像时提供默认用户/和虚拟主机.例如创建一个默认的测试用户".

I have a need where i want to provide defaults users / and virtual-hosts when the image is first started. For example to create a default 'test-user'.

目前我必须通过使用管理插件并通过 web ui 添加用户/虚拟主机来手动执行此操作.有没有办法在启动 RabbitMQ 图像时提供默认设置?

Currently i have to do that manually by using the management plugin and adding the users / virtual-hosts via the web ui. Is there a way i can provide default settings when starting the RabbitMQ image?

推荐答案

您可以创建一个简单的 Dockerfile,扩展基本镜像的功能并创建一个默认用户.您需要的 Docker 文件如下:

You can create a simple Dockerfile that extends the functionality of the basic image and creates a default user. The Docker file you need is the following:

FROM rabbitmq

# Define environment variables.
ENV RABBITMQ_USER user
ENV RABBITMQ_PASSWORD user
ENV RABBITMQ_PID_FILE /var/lib/rabbitmq/mnesia/rabbitmq

ADD init.sh /init.sh
RUN chmod +x /init.sh
EXPOSE 15672

# Define default command
CMD ["/init.sh"]

还有init.sh:

#!/bin/sh

# Create Rabbitmq user
( rabbitmqctl wait --timeout 60 $RABBITMQ_PID_FILE ; 
rabbitmqctl add_user $RABBITMQ_USER $RABBITMQ_PASSWORD 2>/dev/null ; 
rabbitmqctl set_user_tags $RABBITMQ_USER administrator ; 
rabbitmqctl set_permissions -p / $RABBITMQ_USER  ".*" ".*" ".*" ; 
echo "*** User '$RABBITMQ_USER' with password '$RABBITMQ_PASSWORD' completed. ***" ; 
echo "*** Log in the WebUI at port 15672 (example: http:/localhost:15672) ***") &

# $@ is used to pass arguments to the rabbitmq-server command.
# For example if you use it like this: docker run -d rabbitmq arg1 arg2,
# it will be as you run in the container rabbitmq-server arg1 arg2
rabbitmq-server $@

此脚本还在端口 15672 处初始化和公开 RabbitMQ 网络管理员.

This script also initialize and expose the RabbitMQ webadmin at port 15672.

这篇关于启动 RabbitMQ Docker 容器时如何添加初始用户?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆