我无法保留通过管理面板设置的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
在rabbitmq
Docker Hub image的文档中(在“运行守护程序”下:):
关于RabbitMQ的重要说明之一是,它基于所谓的“节点名称”存储数据,该节点名称默认为主机名。这对于在Docker中使用意味着什么,我们应该为每个守护程序显式指定
rabbitmq
/-h
,这样我们就不会获得随机的主机名并可以跟踪我们的数据。
等效的Docker Compose设置为--hostname
。它默认为容器ID,容器ID每次重新创建时都会更改,这就是为什么您看不到数据持续存在的原因,并且文件名的名称中包含12进制数字ID的原因。
hostname:
[它)。