0

在构建这个 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
4

1 回答 1

0

这是因为 rabitmq 服务器没有运行。

Docker 在进程级别工作。Dockerfile 的每一行都是隔离的,只会运行您要求的内容。所以当你运行时rabbitmqctl status,它会说 node down 因为容器中没有其他进程在运行。

如果你做这样的事情,它的工作原理:

RUN rabbitmq-server& sleep 1 && rabbitmqctl status

旁注:你不需要sudo. 你已经是root了。

此外,即使您需要自定义更改,您也可能应该重用官方图像。这是一个很好的起点:https ://registry.hub.docker.com/_/rabbitmq/

于 2015-06-19T18:44:37.757 回答