【发布时间】:2017-05-02 09:13:35
【问题描述】:
无法在我的 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"]
这是构建 Dockerfile 中的一些输出
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,就在这个容器中。它不需要从这个容器外连接。
这里有一些关于这个问题的猜测
- 容器内的网络配置
- 请注意 docker build 中的第 4/6 步
【问题讨论】:
-
为什么不用官方的兔子图呢?在您的示例中,要使其正常工作,您必须公开兔子端口(如果您想使用兔子管理插件,则为 5672 和 15672)
-
那将是 2 个容器? rabbitmq 容器和我的项目容器?我对 Dokcerfile 很陌生。
-
是的,您将拥有 Dockerfile 来构建任何容器(如果需要)和 docker-compose.yml 文件来编排容器。
-
谢谢,它有效。但是我想在我的Dockerfile中找出导致rabbitmq-server失败的问题在哪里。
标签: python docker rabbitmq celery dockerfile