RabbitMQ と Docker/Fig の学習を始めたばかりです。Rabbit Server、Producer、および Consumer にそれぞれ 1 つずつ、3 つの fig コンテナーを使用した非常に単純な例があります。で、次のエイリアスに/etc/hosts
設定しました:boot2docker ip
dockerhost
/etc/hosts
192.168.59.103 dockerhost
fig up -d
RabbitMQ サーバーの場合、すべてが正常に機能します。ブラウザを開いてdockerhost:PORTNUM
、RabbitMQ コントロール パネルにアクセスできます。
私の RabbitMQ プロデューサーでは、接続ホストをdockerhost
次のように設定しました。
/producer.py
connection = pika.BlockingConnection(pika.ConnectionParameters(
host=config['RabbitMQ']['hostname'],
...
))
私の設定ファイルは次のようになります。
/config.ini
[RabbitMQ]
hostname = dockerhost
ただしfig up -d
、RabbitMQ プロデューサーで実行すると、接続エラーが発生します。
rabbitworker_1 | File "/usr/local/lib/python3.4/site-packages/pika/adapters/blocking_connection.py", line 301, in _adapter_connect
rabbitworker_1 | raise exceptions.AMQPConnectionError(error)
rabbitworker_1 | pika.exceptions.AMQPConnectionError: [Errno -2] Name or service not known`
エイリアスboot2docker ip
の代わりに RabbitMQ ホスト名に直接入力することで、RabbitMQ プロデューサーを適切に動作させることができます。dockerhost
/config.ini
[RabbitMQ]
hostname = 192.168.59.103
上記の変更により、すべてが適切に機能します。
私の質問はhostname = dockerhost
、実際の IP アドレスを入力する代わりに、RabbitMQ プロデューサーを使用して動作させるにはどうすればよいですか?
アップデート
fig.yml
これが動作する私のRabbitMQサーバーdockerhost
です:
rabbit:
image: mikaelhg/docker-rabbitmq
ports:
- "5672:5672"
- "15672:15672"
そして、ここに私のRabbitMQプロデューサーがfig.yml
あり、Dockerfile
これは動作しませんdockerhost
:
/fig.yml
rabbitworker:
build: .
volumes:
- .:/opt/worker
- ./log:/var/log
command: supervisord -n
/Dockerfile
FROM python3-rabbit-producer
COPY . /opt/worker
WORKDIR /opt/worker
RUN pip3.4 install -r requirements.txt
CMD ["supervisord", "-n"]