2015-07-21 156 views
2

================ Dockerfile1 =================使用rabbitmqadmin在泊坞窗

FROM rabbitmq:3-management 
MAINTAINER 123 "[email protected]" 
RUN apt-get update 
ENV REFERSHED_AT 2015-07-20 
RUN apt-get install -y python 
ADD rabbitmqadmin /usr/local/bin/rabbitmqadmin 
RUN chmod 755 /usr/local/bin/rabbitmqadmin 
RUN service rabbitmq-server start && /usr/local/bin/rabbitmqadmin declare queue name=my-new-queue durable=true && service rabbitmq-server stop 

RUN rabbitmq-plugins enable --offline rabbitmq_management 
EXPOSE 15672 
CMD rabbitmq-server 

== ============ Dockerfile2 ===================

FROM rabbitmq:3-management 
MAINTAINER 123 "[email protected]" 
RUN apt-get update 
ENV REFERSHED_AT 2015-07-20 
RUN apt-get install -y python 
ADD rabbitmqadmin /usr/local/bin/rabbitmqadmin 
RUN chmod 755 /usr/local/bin/rabbitmqadmin 
RUN rabbitmq-plugins enable --offline rabbitmq_management 
EXPOSE 15672 
CMD service rabbitmq-server start && /usr/local/bin/rabbitmqadmin declare queue name=my-new-queue durable=true && service rabbitmq-server stop && rabbitmq-server 

当我使用Dockerfile1时,队列没有声明,但Dockerfile2起作用。Dockerfile1和Dockerfile2有什么区别?

回答

3

是的,Dockerfile1和Dockerfile2存在差异。您在Dockerfile2中创建队列之前公开端口15672,并在dockerfile1中显示队列命令之后公开队列。 其实Rabbitmqadmin使用HTTP API来创建队列,交换等。如果你申请的命令

curl -u guest:guest -XGET http://localhost:15672/api/queues 

你会得到所有队列 的列表,如果你申请的命令:

curl -i -u guest:guest -H "content-type:application/json" \ 
-XPUT -d'{"type":"direct","durable":true}' \ 
http://localhost:15672/api/exchanges/%2f/my-new-exchange 

这将创造新的交流我-new交换。 不暴露端口你将如何创建队列? 。 欲了解更多信息,你可以通过rabbitmq手册。 http://hg.rabbitmq.com/rabbitmq-management/raw-file/3646dee55e02/priv/www-api/help.html