docker 启动 rabbitmq 异常 Cookie file /var/lib/rabbitmq/.erlang.cookie must be accessible by owner only
问题
docker 启动rabbitmq 报错,Cookie file /var/lib/rabbitmq/.erlang.cookie must be accessible by owner only
原因
可以看到官网的说明 https://hub.docker.com/_/rabbitmq/
这将启动一个 RabbitMQ 容器,侦听默认端口 5672。如果您花一分钟时间,然后执行docker logs some-rabbit
,您将在输出中看到类似于以下内容的块:
=INFO REPORT==== 6-Jul-2015::20:47:02 ===
node : rabbit@my-rabbit
home dir : /var/lib/rabbitmq
config file(s) : /etc/rabbitmq/rabbitmq.config
cookie hash : UoNOcDhfxW9uoZ92wh6BjA==
log : tty
sasl log : tty
database dir : /var/lib/rabbitmq/mnesia/rabbit@my-rabbit
请注意database dir
那里,特别是它在文件存储的末尾附加了我的“节点名称”。该图像/var/lib/rabbitmq
默认构成一个卷的全部。
解决
如果是docker 命令启动,修改docker命令的挂载目录即可,如果是docker-compose启动,则需要调整 compose 文件内容
version: "3.6"
services:
rabbitmq:
image: rabbitmq:3.12.3-management
container_name: ts_rabbitmq
restart: always
ports:
- 5672:5672
- 15672:15672
volumes:
# 这里 调整挂载文件路径
- /data/source/data/rabbit_data:/var/lib/rabbitmq/mnesia
- /data/source/conf/rabbit_conf/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf
environment:
RABBITMQ_DEFAULT_USER: imuser
RABBITMQ_DEFAULT_PASS: ABfe4GRB3tQjRAxm
RABBITMQ_DEFAULT_VHOST: im_celery
# 这是配置文件
RABBITMQ_CONFIG_FILE: /etc/rabbitmq/rabbitmq.conf
查看
sudo docker exec -it ts_rabbitmq bash
sudo docker logs -f ts_rabbitmq
# 输出的内容中,找到 Config files 地址。
rabbitmq-diagnostics status
# 查看是否配置文件正常
rabbitmqctl eval 'application:get_env(rabbit,consumer_timeout).'