无法在docker容器中启动rabbitmq-server,如何编写这个Dokcerfile?

无法在我的Docker容器中启动rabbitmq-server

这是我的Dockerfile

# python official docker image, I have check that it is base on the debain jessie # The first line of python:2.7 Dockerfile is "FROM buildpack-deps:jessie" FROM python:2.7 # The rabbitmq-server install commands are as follow # I am sure that if I execute those commands in a Debain Jessie Server # The rabbitmq-server will be installed successfully and connectable # But in the docker, it does not works RUN echo 'deb http://www.rabbitmq.com/debian/ testing main' > /etc/apt/sources.list.d/rabbitmq.list RUN wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | apt-key add - RUN apt-get update && apt-get install -y --no-install-recommends rabbitmq-server && rm -rf /var/lib/apt/lists/* RUN service rabbitmq-server restart RUN service rabbitmq-server status # A lot of other things about deploy my project # A lot of other things about deploy my project # A lot of other things about deploy my project CMD ["xxx", "xxxx"] 

以下是构buildDockerfile中的一些输出

 Step 4/6 : RUN apt-get ...... ... ... Adding system user `rabbitmq' (UID 105) ... Adding new user `rabbitmq' (UID 105) with group `rabbitmq' ... Not creating home directory `/var/lib/rabbitmq'. invoke-rc.d: policy-rc.d denied execution of start. Processing triggers for systemd (215-17+deb8u6) ... Processing triggers for libc-bin (2.19-18+deb8u7) ... ---> 35eb870defca Removing intermediate container c2aa80f72a12 

 Step 5/6 : RUN service rabbitmq-server restart ---> Running in cff316499bf0 Restarting message broker: rabbitmq-server. 

 Step 6/6 : RUN service rabbitmq-server status ---> Running in 2c03f8721cf8 Status of node rabbit@607924cbbc93 ... Error: unable to connect to node rabbit@607924cbbc93: nodedown DIAGNOSTICS =========== attempted to contact: [rabbit@607924cbbc93] rabbit@607924cbbc93: * connected to epmd (port 4369) on 607924cbbc93 * epmd reports: node 'rabbit' not running at all no other nodes on 607924cbbc93 * suggestion: start the node current node details: - node name: 'rabbitmq-cli-30@607924cbbc93' - home dir: /var/lib/rabbitmq - cookie hash: nK/d5I704NfDDEZdnP6xPg== The command '/bin/sh -c service rabbitmq-server status' returned a non-zero code: 3 

问题在哪里,如何解决?

我很困惑,因为安装命令是正确的,他们在debain vps工作得很好。

但是,它们在docker集装箱中效果不佳。

我的目的是让我的python-celery在这个容器里连接rabbitmq-server,就在这个容器里。 它不需要从这个容器中连接。

这是对这个问题的一些猜测

  1. 容器内的networkingconfiguration
  2. 请注意docker构build中的步骤4/6

所以正如我们在评论中所讨论的,我build议你使用rabbitmq官方的docker镜像。 因此,你最终将有2个容器。 在这种情况下:应用程序和兔子。 以下是Dockerfile和docker-compose.yml的示例:

Dockerfile:

 # use base python image with python 2.7 FROM python:2.7 # add requirements.txt to the image ADD requirements.txt /app/requirements.txt # set working directory to /app/ WORKDIR /app/ # install python dependencies RUN apt-get update RUN apt-get -y install libpq-dev python-dev RUN pip install -r requirements.txt 

和docker-compose.yml的例子:

 version: '2' services: # RabbitMQ rabbit: hostname: rabbit image: rabbitmq:3.6.1-management ports: - "5672:5672" # we forward this port because it's useful for debugging - "15672:15672" # here, we can access rabbitmq management plugin # App app: build: context: . dockerfile: Dockerfile hostname: app volumes: - .:/app # mount current directory inside container ports: - "8000:8000" # set up links so that web knows about db and redis links: - rabbit 

要启动新容器,请使用docker-compose build && docker-compose up -d