web-dev-qa-db-fra.com

consommateur: impossible de se connecter à amqp: // utilisateur: ** @ localhost: 5672 //: [Errno 111] Connexion refusée

J'essaye de construire mon flux d'air en utilisant docker et rabbitMQ. J'utilise rabbitmq: image de gestion 3. Et je suis en mesure d'accéder à rabbitMQ UI et à l'API.

Dans airflow, je construis un serveur web airflow, un planificateur d'airflow, un travailleur airflow et une fleur airflow. Le fichier Airflow.cfg est utilisé pour configurer le flux d'air.

Où j'utilise broker_url = amqp://user:[email protected]:5672/ et celery_result_backend = amqp://user:[email protected]:5672/

Mon fichier de composition Docker est le suivant

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

Je suis capable de créer des images à l'aide de Docker Composer. Cependant, je ne suis pas en mesure de connecter mon planificateur de flux d'air à rabbitMQ. J'obtiens l'erreur suivante:

consommateur: impossible de se connecter à amqp: // utilisateur: ** @ localhost: 5672 //: [Errno 111] Connexion refusée.

J'ai essayé d'utiliser 127.0.0.1 et localhost à la fois.

Qu'est ce que je fais mal ?

10
Kush Patel

Depuis vos conteneurs airflow, vous devriez pouvoir vous connecter au service rabbit1. Il vous suffit donc de changer amqp://user:**@localhost:5672//: à amqp://user:**@rabbit1:5672//: et ça devrait marcher.

Docker compose crée un réseau par défaut et y attache des services qui ne lui définissent pas explicitement de réseau.

Vous n'avez pas besoin d'exposer les ports 5672 et 15672 sur rabbit1, sauf si vous souhaitez pouvoir y accéder depuis l'extérieur de l'application.

De plus, il n'est généralement pas recommandé de créer des images dans Docker-compose.

8
Anoop

J'ai résolu ce problème en installant le serveur rabbitMQ dans mon système avec la commande Sudo apt install rabbitmq-server.

2
imhimanshu