当前位置: 首页 > 面试题库 >

启动RabbitMQ Docker容器时如何添加初始用户?

段干飞翮
2023-03-14
问题内容

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

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

我需要在第一次启动映像时要提供默认用户/和虚拟主机的位置。例如,创建一个默认的“ test-user”。

目前,我必须通过使用管理插件并通过Web ui添加用户/虚拟主机来手动执行此操作。启动RabbitMQ图像时,有什么方法可以提供默认设置吗?


问题答案:

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

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 Webadmin。



 类似资料:
  • 本文向大家介绍SpringBoot 如何添加容器启动的初始化逻辑的操作方法,包括了SpringBoot 如何添加容器启动的初始化逻辑的操作方法的使用技巧和注意事项,需要的朋友参考一下 背景 传统 SpringMVC 项目中,我们可以定义容器初始化 Servlet ,然后在 web.xml 配置该 Servlet ,指定 load-on-startup 就可以在容器启动后,执行一些系统的初始化逻辑。

  • 目前,我正在收听使用spring boot和spring amqp通过API调用创建的新队列。这是一段成功运行的代码 但如果应用程序再次启动,我需要在容器(DirectMessageListenerContainer)中注册队列,并在应用程序启动时将队列添加到侦听器容器id“queueContainer”中。 我无法侦听队列列表并在启动时将其添加到listner容器。在这方面你能帮忙吗

  • 问题内容: 我用mysql启动了一个docker容器。 实际上,我想创建一个新用户和一个新表-我必须在MySQL Workbench中进行操作。 这是我的docker run命令: 我的问题是: 如何添加创建用户和表的sql启动脚本(仅用于容器的首次启动)? 我必须执行哪些步骤? 有人可以帮我吗? 非常感谢! 问题答案: 你需要通过创建用户,ENV VAR和使用量与启动脚本映射目录(,,) 解释来

  • 我有一个docker容器,里面运行着一些进程(uwsgi和celery)。我想为这些进程创建一个celery用户和一个uwsgi用户,以及一个它们都将属于的worker组,以便分配权限。 我尝试将和添加到我的Dockerfile中,但这会导致问题,因为这些命令提示输入(我已经发布了下面构建的响应)。 将用户添加到Docker容器中以便为在容器中运行的工作者设置权限的最佳方法是什么? 我的Docke

  • 我按照步骤创建了HelloWorld示例,但它没有运行。它给出了以下错误: 初始化引导层java.lang.module.FindException时出错:读取模块:F:\Develop\Eclipse\HelloWorld\bin时出错,原因是:java.lang.module.InvalidModuleDescriptoRexception:HelloWorld.class在顶级目录中找到(模