如何在Docker中保留RabbitMQ用户帐户

问题描述 投票:1回答:1

我无法保留通过管理面板设置的dockerized RabbitMQ用户帐户。重新启动后,它们消失了,我相信它与每次重新启动时创建的新mnesia数据库有关。

我尝试将docker卷绑定到/var/lib/rabbitmq

version: '3.1'

services:

  rabbitmq:
    image: rabbitmq:management-alpine
    volumes:
      - rabbitdata1:/var/lib/rabbitmq/
    ports:
      - "5672:5672"
      - "15672:15672"

volumes:
  rabbitdata1:
    driver: local

当我查看挂载目录的内容时,会得到:

$ docker exec -ti local_rabbitmq_1 /bin/bash
bash-5.0# ls /var/lib/rabbitmq/mnesia/
rabbit@0eceaaa217c8                 rabbit@0eceaaa217c8-plugins-expand
rabbit@0eceaaa217c8-feature_flags   [email protected]

但是当我重新启动服务时,似乎为新的PID创建了一个新实例,并且所有更改都丢失了:

$ docker exec -ti local_rabbitmq_1 /bin/bash
bash-5.0# ls /var/lib/rabbitmq/mnesia/
rabbit@0eceaaa217c8                 rabbit@ac5afbef3c81
rabbit@0eceaaa217c8-feature_flags   rabbit@ac5afbef3c81-feature_flags
rabbit@0eceaaa217c8-plugins-expand  rabbit@ac5afbef3c81-plugins-expand
[email protected]             [email protected]

是否有办法在两次RabbitMQ docker服务重启之间保留更改?

也许还有其他目录可以解决这个问题?

我检查了其他潜在的候选人,但只发现了/etc/rabbitmq//opt/rabbitmq/,它们分别看起来像是配置目录和安装目录:

bash-5.0# find . -name 'rabbitmq'
./etc/rabbitmq
./var/log/rabbitmq
./var/lib/rabbitmq
./opt/rabbitmq
./opt/rabbitmq/etc/rabbitmq
docker rabbitmq
1个回答
0
投票

rabbitmq Docker Hub image的文档中(在“运行守护程序”下:):

关于RabbitMQ的重要说明之一是,它基于所谓的“节点名称”存储数据,该节点名称默认为主机名。这对于在Docker中使用意味着什么,我们应该为每个守护程序显式指定rabbitmq / -h,这样我们就不会获得随机的主机名并可以跟踪我们的数据。

等效的Docker Compose设置为--hostname。它默认为容器ID,容器ID每次重新创建时都会更改,这就是为什么您看不到数据持续存在的原因,并且文件名的名称中包含12进制数字ID的原因。

hostname:
[它)。
© www.soinside.com 2019 - 2024. All rights reserved.