4

================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 の違いは何ですか?

4

1 に答える 1

6

はい、 Dockerfile1 と Dockerfile2 に違いがあります。dockerfile2 でキューを作成する前にポート 15672 を公開し、dockerfile1 で queue コマンドを実行した後に公開しています。実際には 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

新しい交換 my-new-exchange を作成します。ポートを公開せずに、どうすればキューを作成できますか? . 詳細については、rabbitmq のマニュアルを参照してください。 http://hg.rabbitmq.com/rabbitmq-management/raw-file/3646dee55e02/priv/www-api/help.html

于 2015-07-21T10:16:30.640 に答える