我在坚持通过管理面板设置的RabbitMQ用户帐户时遇到了问题。一旦重新启动,它们就会消失,我相信这与每次重新启动时创建的新的mnesia数据库有关。
我尝试将一个坞卷绑定到/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 rabbit@0eceaaa217c8.pid但是,当我重新启动服务时,似乎为新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
rabbit@0eceaaa217c8.pid rabbit@ac5afbef3c81.pid我还尝试设置RABBITMQ_NODENAME环境变量,这样,与上面的rabbit@0eceaaa217c8和rabbit@ac5afbef3c81不同,我得到了一个用于.pid和mnesia目录的常量字符串,但是RabbitMQ甚至不会重新启动:
2020-04-10 10:41:34.657 [info] <0.309.0> Running boot step database defined by app rabbit
2020-04-10 10:41:34.685 [error] <0.308.0> CRASH REPORT Process <0.308.0> with 0 neighbours exited with reason: {{failed_to_cluster_with,[foo@190e6343c238],"Mnesia could not connect to any nodes."},{rabbit,start,[normal,[]]}} in application_master:init/4 line 138
2020-04-10 10:41:34.686 [info] <0.44.0> Application rabbit exited with reason: {{failed_to_cluster_with,[foo@190e6343c238],"Mnesia could not connect to any nodes."},{rabbit,start,[normal,[]]}}
{"Kernel pid terminated",application_controller,"{application_start_failure,rabbit,{{failed_to_cluster_with,[foo@190e6343c238],\"Mnesia could not connect to any nodes.\"},{rabbit,start,[normal,[]]}}}"}
Kernel pid terminated (application_controller) ({application_start_failure,rabbit,{{failed_to_cluster_with,[foo@190e6343c238],"Mnesia could not connect to any nodes."},{rabbit,start,[normal,[]]}}})还有其他方法来保留RabbitMQ停靠服务重新启动之间的更改吗?
也许还有其他目录可以起作用?
我检查了其他可能的候选目录,但只找到了/etc/rabbitmq/和/opt/rabbitmq/,它们分别看起来像是配置目录和安装目录:
bash-5.0# find . -name 'rabbitmq'
./etc/rabbitmq
./var/log/rabbitmq
./var/lib/rabbitmq
./opt/rabbitmq
./opt/rabbitmq/etc/rabbitmq发布于 2020-04-10 10:21:27
在码头枢纽形象的文档中,它注意到(在“运行守护进程”下):
关于RabbitMQ,需要注意的一件重要事情是,它根据它所称的“节点名”存储数据,该名称默认为主机名。这意味着在Docker中使用的是,我们应该为每个守护进程显式地指定
-h/--hostname,这样我们就不会得到随机的主机名,并且可以跟踪我们的数据。
等效的Docker组合设置是hostname:。它默认为容器ID,每次重新创建容器时都会更改,这就是为什么您没有看到数据持久化,以及文件名的名称中有12位数的ID。
services:
rabbitmq:
image: rabbitmq:management-alpine
hostname: rabbitmq # <-----
volumes:
- rabbitdata1:/var/lib/rabbitmq/
ports:
- "5672:5672"
- "15672:15672"( hostname:设置的唯一东西是容器认为自己的主机名是什么。它与网络设置完全没有连接。设置它通常是不必要的,除非您有这样的软件专门研究它。)
发布于 2021-10-19 18:53:24
创建两个文件夹、数据等

enabled_plugins
[rabbitmq_management,rabbitmq_prometheus].rabbitmq.conf
auth_mechanisms.1 = PLAIN
auth_mechanisms.2 = AMQPLAIN
loopback_users.guest = false
listeners.tcp.default = 5672
#default_pass = admin
#default_user = admin
hipe_compile = false
#management.listener.port = 15672
#management.listener.ssl = false
management.tcp.port = 15672
management.load_definitions = /etc/rabbitmq/definitions.jsondefinitions.json
{
"users": [
{
"name": "admin",
"password": "admin",
"tags": "administrator"
}
],
"vhosts": [
{
"name": "/"
}
],
"policies": [
{
"vhost": "/",
"name": "ha",
"pattern": "",
"apply-to": "all",
"definition": {
"ha-mode": "all",
"ha-sync-batch-size": 256,
"ha-sync-mode": "automatic"
},
"priority": 0
}
],
"permissions": [
{
"user": "admin",
"vhost": "/",
"configure": ".*",
"write": ".*",
"read": ".*"
}
],
"queues": [
{
"name": "job-import.triggered.queue",
"vhost": "/",
"durable": true,
"auto_delete": false,
"arguments": {}
}
],
"exchanges": [
{
"name": "lob-proj-dx",
"vhost": "/",
"type": "direct",
"durable": true,
"auto_delete": false,
"internal": false,
"arguments": {}
}
],
"bindings": [
{
"source": "lob-proj-dx",
"vhost": "/",
"destination": "job-import.triggered.queue",
"destination_type": "queue",
"routing_key": "job-import.event.triggered",
"arguments": {}
}
]
}经营码头
docker run --restart=always -d -p 5672:5672 -p 15672:15672 --mount type=bind,source=E:\docker\rabbit\data,target=/var/lib/rabbitmq/ --mount type=bind,source=E:\docker\rabbit\etc,target=/etc/rabbitmq/ --name rabbitmq --hostname my-rabbit rabbitmq:3.7.28-management在重新启动的过程中,事情会一直持续下去。

取自这里
https://stackoverflow.com/questions/61137733
复制相似问题