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

consumer: Cannot connect to amqp://user:**@localhost:5672//: [Errno 111] Connection refused

我正在尝试使用 docker 和 rabbitMQ 构建我的气流。我正在使用 rabbitmq:3-管理图像。而且我能够访问 rabbitMQ UI 和 API.

在 airflow 中,我正在构建 airflow webserver、airflow scheduler、airflow worker 和 airflow flower。 Airflow.cfg 文件用于配置气流。

我在哪里使用 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 compose 构建图像。但是,我无法将气流调度程序连接到 rabbitMQ。我收到以下错误:

consumer: Cannot connect to amqp://user:**@localhost:5672//: [Errno 111] Connection refused.

我试过同时使用 127.0.0.1 和本地主机。

我做错了什么?

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

Docker compose 创建一个默认网络并附加未明确定义网络的服务。

你不需要在 rabbit1 上公开 5672 和 15672 端口,除非你希望能够从应用程序外部访问它。

另外,一般不建议在docker-compose.

里面构建镜像

我通过使用命令 sudo apt install rabbitmq-server 在我的系统中安装 rabbitMQ 服务器解决了这个问题。