2017-09-29 15 views
0

私はthisチュートリアルに従っています。そこで、RabbitMQのIPアドレスをセロリの設定にする必要があります。RabbitMQのIPアドレスを別のコンテナ(Docker Compose)から実行するにはどうすればよいですか?

docker-compose.ymlにNGINX、Django + Celery、RabbitMQという3つのコンテナがあります。これらはすべてdocker-compose upで実行されます。しかし、別のコンテナにcelery.pyのRabbitMQ IPアドレスを設定する必要があります。

Googleを見ると、docker-machine ip <container>が解決策になります。しかし、docker-machineはコンテナAFAIKを走らせるためだけに機能します。 同じdocker-compose.ymlファイル内の別のコンテナにコンテナのIPアドレスを渡すにはどうすればいいですか?この場合、私は自分のRabbitMQ IPアドレスを持っています。

+0

本当にIPアドレスが必要ですか? RabbitMQを実行しているコンテナのホスト名では十分ではありませんか? – mkasberg

+0

test_celery.pyは同じdocker-composeファイルのコンテナ内で実行されるので、そのIPアドレスの代わりに 'rabbit'(ホスト名)を使うことができます。しかし、私は間違っているかもしれない、私は試したり、それを詳細に見ていない。 – mkasberg

+0

私も仲間とは分かりません。私のセロリの設定は 'BROKER_URL =" amqp:// admin:asdasdasd @ localhost:5672 "'です。私は間違いなく 'localhost'を変更する必要がありますか? – notalentgeek

答えて

0

IPを渡す必要はありません。 docker-compose.ymlのサービスにlinkの設定を追加し、サービス名でコンテナを参照してください。

services: 
    rabbitmq: 
    # other config here 
    celery: 
    # other config ... 
    link: 
     - rabbitmq 

次に、rabbitmqという名前で接続するようにセラーを設定できます。したがって、BROKER_URLの設定はamqp://user:[email protected]:5672/queue_nameになります。

+0

リンクは時代遅れです(docker-compose 3では 'network'だけを使用します)。リンク名がサービス名と同じ場合は不要です。しかし、基本的には、これは正しいアプローチです。 – mkasberg

関連する問題