RABBITMQ_ERLANG_COOKIE弃用后,如何在docker run中传递erlang.cookie?
修改后的Docker启动命令
不需要复杂的Dockerfile或卷,直接在docker run中通过命令行先创建正确权限的.erlang.cookie文件,再启动RabbitMQ服务:
- 创建网络(命令不变)
docker network create rabbits
- 启动三个节点,每个节点的命令修改为:
# 节点1 docker run -d --rm --net rabbits --hostname rabbit-1 --name rabbit-1 -p 8081:15672 rabbitmq:3.8-management bash -c "echo 'ASDF' > /var/lib/rabbitmq/.erlang.cookie && chmod 600 /var/lib/rabbitmq/.erlang.cookie && rabbitmq-server" # 节点2 docker run -d --rm --net rabbits --hostname rabbit-2 --name rabbit-2 -p 8082:15672 rabbitmq:3.8-management bash -c "echo 'ASDF' > /var/lib/rabbitmq/.erlang.cookie && chmod 600 /var/lib/rabbitmq/.erlang.cookie && rabbitmq-server" # 节点3 docker run -d --rm --net rabbits --hostname rabbit-3 --name rabbit-3 -p 8083:15672 rabbitmq:3.8-management bash -c "echo 'ASDF' > /var/lib/rabbitmq/.erlang.cookie && chmod 600 /var/lib/rabbitmq/.erlang.cookie && rabbitmq-server"
改动原因
- 官方已弃用
RABBITMQ_ERLANG_COOKIE环境变量,推荐使用$HOME/.erlang.cookie文件(RabbitMQ容器中运行用户的HOME路径为/var/lib/rabbitmq) .erlang.cookie文件必须设置为600权限,否则RabbitMQ服务启动会失败- 通过
bash -c串联命令,先创建并配置cookie文件再启动服务,完全符合官方要求且无需额外配置
集群组建命令保持不变
原有的集群操作命令可正常执行,不会再出现弃用警告:
# 配置节点2加入集群 docker exec -it rabbit-2 rabbitmqctl stop_app docker exec -it rabbit-2 rabbitmqctl reset docker exec -it rabbit-2 rabbitmqctl join_cluster rabbit@rabbit-1 docker exec -it rabbit-2 rabbitmqctl start_app docker exec -it rabbit-2 rabbitmqctl cluster_status # 配置节点3加入集群 docker exec -it rabbit-3 rabbitmqctl stop_app docker exec -it rabbit-3 rabbitmqctl reset docker exec -it rabbit-3 rabbitmqctl join_cluster rabbit@rabbit-1 docker exec -it rabbit-3 rabbitmqctl start_app docker exec -it rabbit-3 rabbitmqctl cluster_status
内容的提问来源于stack exchange,提问作者iuiz
相关产品推荐
相关产品推荐

