无法在Docker文件中添加rabbitmq用户
我尝试添加一个rabbitmq用户,当我从图像运行一个docker容器,但它抱怨节点已closures:
Error: unable to connect to node rabbit@3af546685019: nodedown DIAGNOSTICS =========== attempted to contact: [rabbit@3af546685019] rabbit@3af546685019: * connected to epmd (port 4369) on 3af546685019 * epmd reports: node 'rabbit' not running at all no other nodes on 3af546685019 * suggestion: start the node current node details: - node name: 'rabbitmq-cli-55@3af546685019' - home dir: /var/lib/rabbitmq - cookie hash: pgr3C5mfbuw86BKnW7cJpw== Error: unable to connect to node rabbit@3af546685019: nodedown
这里是我的Dockerfile:
FROM rabbitmq:3.6.14 ADD rabbitmq_users.sh /usr/lib/rabbitmq/bin WORKDIR /usr/lib/rabbitmq/bin RUN rabbitmq-plugins enable --offline rabbitmq_management ENTRYPOINT ["rabbitmq_users.sh"] EXPOSE 4369 25672 5672 15672
和rabbitmq_users.sh:
#!/bin/sh echo "Creating a user..." sleep 10 rabbitmqctl add_user rmquser rmquser 2>/dev/null rabbitmqctl set_user_tags rmquser administrator rabbitmqctl set_permissions -p / rmquser ".*" ".*" ".*"
看起来像从rabbitmq:3.6.14运行rabbitmq-server之前,首先执行rabbitmq_users.sh我inheritance,因为我看不到任何日志,certificaterabbitmq服务器已启动。 例如,如果我不创build禁用此ENTRYPOINT脚本的用户,服务器启动,它工作正常。
有人可以帮我解决这个问题吗?
rabbitmq图像已经有一个入口点定义为ENTRYPOINT ["docker-entrypoint.sh"]
。 在定义入口点时,您将覆盖基础映像中定义的入口点。 因此rabbitmq不会启动。 你需要做的是“追加”你的用户脚本:
FROM rabbitmq:3.6.14 ADD rabbitmq_users.sh /usr/lib/rabbitmq/bin WORKDIR /usr/lib/rabbitmq/bin RUN rabbitmq-plugins enable --offline rabbitmq_management ENTRYPOINT ["./usr/local/bin/docker-entrypoint.sh rabbitmq-server && ./rabbitmq_users.sh"] EXPOSE 4369 25672 5672 15672
我可以通过调整我的rabbitmq_users.sh来达到这个效果:
#!/bin/sh # Create Rabbitmq user (rabbitmqctl add_user rmquser rmquser 2>/dev/null ; \ rabbitmqctl set_user_tags rmquser administrator ; \ rabbitmqctl set_permissions -p / rmquser ".*" ".*" ".*" ; \ echo "User 'rmquser' has been created") & rabbitmq-server
并使用CMD,而不是ENTRYPOINT,我提供了我的脚本:
... CMD ["rabbitmq_users.sh"]