docker - RabbitMQ 容器配置错误错误:badarg
问题描述
我正在从 Docker 映像运行 Rabbitmq。这是 Dockerfile
FROM rabbitmq:3-management
RUN rabbitmq-plugins enable --offline rabbitmq_mqtt rabbitmq_peer_discovery_k8s rabbitmq_stomp rabbitmq_management
COPY rabbitmq.conf /etc/rabbitmq/rabbitmq.conf
COPY rabbit_init.sh /rabbit_init.sh
RUN ["chmod", "+x", "/rabbit_init.sh"]
RUN ["chmod", "+x", "/etc/rabbitmq/rabbitmq.conf"]
CMD ["/rabbit_init.sh"]
rabbit_init.sh
#!/bin/sh
( sleep 12 ; \
echo "Add VirtualHost ..."; \
rabbitmqctl add_vhost EVhost; \
echo "Enable ha-mode for queue mirroring ..."; \`
rabbitmqctl set_policy -p / ha-all ".*" '{"ha-mode":"all","ha-sync-mode":"automatic"}' --priority 1; \
rabbitmqctl set_policy -p EVhost ha-all ".*" '{"ha-mode":"all","ha-sync-mode":"automatic"}' --priority 1; \
echo "Creating RabbitMQ user '$RABBITMQ_USER' ...";\
rabbitmqctl add_user $RABBITMQ_USER $RABBITMQ_PASSWORD; \
rabbitmqctl set_user_tags $RABBITMQ_USER administrator; \
rabbitmqctl set_permissions -p / $RABBITMQ_USER ".*" ".*" ".*" ; \
rabbitmqctl set_permissions -p EVhost $RABBITMQ_USER ".*" ".*" ".*" ; \
echo "Delete rabbitMq guest user ..."; \
rabbitmqctl delete_user guest; \
)&
rabbitmq-server $@
我在 /etc/rabbitmq/rabbitmq.conf 中有这些配置
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_k8s
cluster_formation.k8s.host = kubernetes.default.svc.cluster.local
cluster_formation.k8s.address_type = ip
cluster_formation.node_cleanup.interval = 30
cluster_formation.node_cleanup.only_log_warning = false
cluster_partition_handling = autoheal
queue_master_locator=min-masters
loopback_users.guest = false
log.file = rabbitmq.log
log.dir = /var/log/rabbitmq
log.file.level = debug
log.file.rotation.date = $D0
运行新容器时出现此错误
BOOT FAILED
===========
Error description:
rabbit:start_it/1 line 484
rabbit:boot_error/2 line 972
rabbit_lager:log_locations/0 line 97
rabbit_lager:ensure_lager_configured/0 line 198
rabbit_lager:lager_configured/0 line 206
lager:list_all_sinks/0 line 341
lager_config:get/2 line 71
ets:lookup(lager_config, {'_global',handlers})
error:badarg
Log file(s) (may contain more information):
{"init terminating in do_boot",badarg}
init terminating in do_boot (badarg)
Crash dump is being written to: /var/log/rabbitmq/erl_crash.dump...done
我不能把我的手放在根本原因上!
容器的文件系统不包含任何日志
甚至建议的日志文件/var/log/rabbitmq/erl_crash.dump
也不存在!
我的本地环境:
视窗 10
用于桌面的 docker
-
非常感谢您的帮助:)
解决方案
推荐阅读
- java - 当应用程序在 netbeans 中运行时,我可以使内部框架消失吗?(爪哇)
- java - 如何在java中拆分组件的数学表达式?
- c# - System.Exception:尝试打开相机预览时“操作无效”
- spring-boot - 如何使用 Spring Security 访问 Controller 中的用户详细信息?
- javascript - Javascript 为什么带有花括号的 const 声明有时在花括号内有 = 符号?
- reactjs - 如何在 Apache Webserver 上开发 React 应用程序
- javascript - 它是如何在javascript中编码的?
- arrays - 将多个不相邻的列复制到数组
- javascript - .filter 在 Typescript 中使用地图
- ssas - 在 mdx 中选择顶部 MAX 10 度量