在docker中使用rabbitmqadmin

================ Dockerfile1 =================

FROM rabbitmq:3-management MAINTAINER 123 "qyb1234@everbridge.com" 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 "qyb1234@gmail.com" 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有什么不同?

是的,Dockerfile1和Dockerfile2有所不同。 您在Dockerfile2中创build队列之前公开端口15672,并在dockerfile1中显示队列命令之后公开。 其实Rabbitmqadmin使用HTTP API创build队列,交换等,如果你应用命令

 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 

它会创造新的交换我新交换。 无需公开端口如何才能创build队列? 。 更多的信息,你可以通过rabbitmq手册。 http://hg.rabbitmq.com/rabbitmq-management/raw-file/3646dee55e02/priv/www-api/help.html