2017-09-29 51 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

相关问题