0

我无法让 rabbitmqadmin 在我的 rabbitmq docker 中工作。

我有这个 Dockerfile:

FROM rabbitmq:3-management

RUN apt-get update && apt-get install -y python

ADD rabbitmqadmin /usr/local/bin/rabbitmqadmin
ADD rabbitconf.json /rabbitconf.json

RUN chmod 755 /usr/local/bin/rabbitmqadmin

CMD ["/usr/local/bin/rabbitmqadmin -q import /rabbitconf.json"]

像这样构建它:

docker build --tag=myrabbit .

像这样运行它:

docker run -d -p 8080:15672 myrabbit

它不起作用......日志显示:

/docker-entrypoint.sh: line 8: /usr/local/bin/rabbitmqadmin -q import     /rabbitconf.json: No such file or directory

我究竟做错了什么 ?

BR

4

1 回答 1

1

您已经混合了CMD指令的 shell 和 exec 格式。

CMD /usr/local/bin/rabbitmqadmin -q import /rabbitconf.json

应该管用。

有关更多信息,请参阅http://docs.docker.com/reference/builder/#cmd

我将为调试类似问题的其他人留下以下内容:

父图像rabbitmq:3-management声明了一个ENTRYPOINT运行docker-entrypoint.sh脚本的图像。您的指令作为参数CMD传递给此脚本。ENTRYPOINT在脚本的某个地方,事情出错了。

没有看到脚本,我们无法真正调试问题。但是,一种解决方法ENTRYPOINT是在 Dockerfile 或命令行中覆盖该指令。例如,如果你运行会发生什么:

docker run -d -p 8080:15672 --entrypoint="" myrabbit

请注意,这不是正确的解决方案;您应该尝试使用ENTRYPOINT父图像的脚本,或对其进行修复,以便它执行您想要的操作。

于 2015-03-22T11:07:20.100 回答