我如何获得从另一个容器(Docker Compose)运行的RabbitMQ的IP地址?

我正在学习这个教程。 在那里,我需要将RabbitMQ IP地址设置为我的Celery设置。

我在docker-compose.yml中有三个容器:NGINX,Django + Celery和RabbitMQ。 这些都是用docker-compose up 。 但是,我需要在不同的容器中有celery.py的RabbitMQ IP地址。

通过Google, docker-machine ip <container>应该是解决scheme。 但是, docker-machine只能运行容器AFAIK。 那么,如何将容器IP地址传递到同一个docker-compose.yml文件中的另一个容器? 在这种情况下,我想要我的RabbitMQ IP地址。

你不需要通过IP。 在docker-compose.yml为这些服务添加linkconfiguration,然后通过服务名称引用容器。

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

然后你可以configuration芹菜连接名称rabbitmq。 所以你的BROKER_URL设置是amqp://user:pass@rabbitmq:5672/queue_name