构建此Dockerfile时,当它到达命令时:
rabbitmqctl status
它返回:
Error: unable to connect to node rabbit@d3659c5e113e: nodedown
DIAGNOSTICS
===========
nodes in question: [rabbit@d3659c5e113e]
hosts, their running nodes and ports:
- d3659c5e113e: [{rabbitmqctl20,52855}]
current node details:
- node name: rabbitmqctl20@d3659c5e113e
我不知道从哪里开始。
这是我正在使用的Docker文件:
FROM ubuntu
MAINTAINER Will Mayger
RUN echo "deb http://archive.ubuntu.com/ubuntu/ $(lsb_release -sc) main universe" >> /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y tar git curl nano wget dialog net-tools build-essential
RUN apt-get install -y python python-dev python-distribute python-pip
RUN wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc
RUN apt-key add rabbitmq-signing-key-public.asc
RUN sudo apt-get -y install rabbitmq-server
RUN sudo rabbitmqctl status
RUN sudo rabbitmqctl add_user test testpass1
RUN sudo rabbitmqctl add_vhost myvhost
RUN sudo rabbitmqctl set_permissions -p myvhost test ".*" ".*" ".*"
RUN sudo rabbitmq-server
RUN git clone https://github.com/CanopyCloud/microservice-python
RUN pip install -r /microservice-python/requirements.txt
EXPOSE 80
WORKDIR /microservice-python/
CMD python /microservice-python/server.py
答案 0 :(得分:0)
这是因为rabitmq服务器没有运行。
Docker在流程级别工作。您的Dockerfile的每一行都是隔离的,只会按您的要求运行。因此,当您运行rabbitmqctl status
时,它会显示节点已关闭,因为容器中没有其他进程在运行。
如果您执行此类操作,则可以:
RUN rabbitmq-server& sleep 1 && rabbitmqctl status
旁注:您不需要sudo
。你已经是root了。
此外,即使您需要自定义更改,也可以重复使用官方图像。这是一个很好的基础:https://registry.hub.docker.com/_/rabbitmq/