2017-09-29 47 views
0

我下面this教程。在那裏,我需要將RabbitMQ IP地址設置爲我的Celery設置。如何獲取從另一個容器(Docker Compose)運行的RabbitMQ的IP地址?

我有我的搬運工,compose.yml三個容器:NGINX,Django的+芹菜,和RabbitMQ的。這些全部使用docker-compose up運行。但是,我需要在不同的容器中擁有celery.py的RabbitMQ IP地址。

通過谷歌尋找,docker-machine ip <container>應該是解決方案。但是,docker-machine僅適用於運行容器AFAIK。 那麼,如何將容器IP地址傳遞到同一個docker-compose.yml文件中的另一個容器?在這種情況下,我想擁有我的RabbitMQ IP地址。

+0

你確定你所需要的IP地址?運行RabbitMQ的容器的主機名稱是否不夠用? – mkasberg

+0

我期望,因爲test_celery.py在同一個docker-compose文件的容器中運行,所以可以簡單地使用'rabbit'(主機名)代替該IP地址。但我可能是錯的,我沒有試過或仔細看過。 – mkasberg

+0

我不太清楚配偶。我的芹菜配置是'BROKER_URL =「amqp:// admin:asdasdasd @ localhost:5672」'我定義需要改變'localhost'不是嗎? – notalentgeek

回答

0

你並不需要通過IP地址。添加link CONFIGS這些服務在您的docker-compose.yml,然後引用由服務名稱的容器。

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

相關問題