docker rabbitmq主机名问题

yun*_*ger 5 rabbitmq docker

我使用Dockerfile构建一个映像,我想在安装后立即将用户添加到RabbitMQ.问题是,在构建期间,docker容器的主机名与运行结果映像时不同.RabbitMQ失去了那个用户; 因为更改了主机名,它使用另一个DB.

我无法更改容器内的文件/etc/hosts/etc/hostname文件,看起来RabbitMQ没有选择我的更改RABBITMQ_NODENAMEHOSTNAME变量.

我发现唯一有效的是在启动RabbitMQ代理之前运行它:

echo "NODENAME=rabbit@localhost" >> /etc/rabbitmq/rabbitmq.conf.d/ewos.conf
Run Code Online (Sandbox Code Playgroud)

但是我将不得不一直运行更改主机名的docker镜像.

docker run -h="localhost" image
Run Code Online (Sandbox Code Playgroud)

关于可以做什么的任何想法?也许解决方案是将用户添加到RabbitMQ而不是构建但是在运行图像上?

Rub*_*cut 6

这里是如何正确配置Dockerfile的示例:

ENV HOSTNAME localhost

RUN /etc/init.d/rabbitmq-server start ; rabbitmqctl add_vhost /test; /etc/init.d/rabbitmq-server stop
Run Code Online (Sandbox Code Playgroud)

这是记住你的配置.


jpe*_*zzo 1

是的,我建议在容器第一次运行时添加用户。

您可以运行一个包装器脚本来处理所有设置,然后启动 RabbitMQ,而不是直接启动 RabbitMQ。如果包装器脚本的最后一步是进程启动,请记住您可以使用exec新进程来替换脚本本身。