消费者:无法连接到amqp://用户:** @ localhost:5672 //:连接被拒绝

我正在尝试使用docker和rabbitMQ来build立我的气stream。 我正在使用rabbitmq:3pipe理图像。 我可以访问rabbitMQ UI和API。

在气stream中,我build立了气streamwebserver,气stream调度器,气stream工作者和气stream花。 Airflow.cfg文件用于configuration气stream。

我在哪里使用broker_url = amqp://user:password@127.0.0.1:5672/celery_result_backend = amqp://user:password@127.0.0.1:5672/

我的docker撰写文件如下

 version: '3' services: rabbit1: image: "rabbitmq:3-management" hostname: "rabbit1" environment: RABBITMQ_ERLANG_COOKIE: "SWQOKODSQALRPCLNMEQG" RABBITMQ_DEFAULT_USER: "user" RABBITMQ_DEFAULT_PASS: "password" RABBITMQ_DEFAULT_VHOST: "/" ports: - "5672:5672" - "15672:15672" labels: NAME: "rabbitmq1" webserver: build: "airflow/" hostname: "webserver" restart: always environment: - EXECUTOR=Celery ports: - "8080:8080" depends_on: - rabbit1 command: webserver scheduler: build: "airflow/" hostname: "scheduler" restart: always environment: - EXECUTOR=Celery depends_on: - webserver - flower - worker command: scheduler worker: build: "airflow/" hostname: "worker" restart: always depends_on: - webserver environment: - EXECUTOR=Celery command: worker flower: build: "airflow/" hostname: "flower" restart: always environment: - EXECUTOR=Celery ports: - "5555:5555" depends_on: - rabbit1 - webserver - worker command: flower 

我能够使用docker撰写构build图像。 但是,我无法将我的气stream调度程序连接到rabbitMQ。 我收到以下错误:

消费者:无法连接到amqp://用户:** @ localhost:5672 //:[Errno 111]连接被拒绝。

我已经尝试使用127.0.0.1和本地主机。

我做错了什么?

从您的airflow容器中,您应该能够连接到服务rabbit1 。 所以你所要做的就是改变amqp://user:**@localhost:5672//: amqp://user:**@rabbit1:5672//:它应该可以工作。

Docker组合创build一个默认networking,并将没有明确定义networking的服务附加到它。

除非您希望能够从应用程序之外访问它,否则不需要公开rabbit1上的5672和15672端口。

此外,通常不build议在docker-compose中构build图像。