简体   繁体   English

无法将 celery 与 docker 上的 rabbitmq 服务器连接

[英]Can't connect celery with rabbitmq server on docker

I'm trying to create docker-compose file that will run django apache server with celery tasks, and using rabbitmq as message brooker. I'm trying to create docker-compose file that will run django apache server with celery tasks, and using rabbitmq as message brooker. My problem is that celery can't connect to rabbitmq.我的问题是 celery 无法连接到 rabbitmq。 I'm getting that error:我收到了那个错误:

[2021-02-18 08:11:44,769: ERROR/MainProcess] consumer: Cannot connect to amqp://guest:**@rabbitmq:5672//: [Errno 111] Connection refused. [2021-02-18 08:11:44,769: ERROR/MainProcess] 消费者:无法连接到 amqp://guest:**@rabbitmq:5672//:[Errno 111] 连接被拒绝。

Also this is my first time building docker images so i probably did a lot of mistakes there.这也是我第一次构建 docker 图像,所以我可能在那里犯了很多错误。

My docker-compose file:我的 docker-compose 文件:

version: "3.8"

services:
  server: &server
    build:
      context: .
    environment:
      - PYTHONUNBUFFERED=1
      - CELERY_BROKER=amqp://admin:password@rabbitmq:5672//
    volumes:
      - .:/var/www/html/public
    ports:
      - 80:80
    command:
      ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
    depends_on:
      - rabbitmq
      - celery_beat
    networks:
      - main
  
  rabbitmq:
    container_name : rabbitmq
    image: rabbitmq:3.8
    hostname: rabbitmq
    ports:
      - 5672:5672
    networks:
      - main
    environment:   
    - RABBITMQ_DEFAULT_USER=admin
    - RABBITMQ_DEFAULT_PASS=password


  celery_worker:
    <<: *server
    hostname: rabbitmq
    command: celery -A public worker -l INFO
    ports: []
    networks:
      - main
    depends_on:
      - rabbitmq
    environment:
    #- RABBITMQ_DEFAULT_USER=admin
    #- RABBITMQ_DEFAULT_PASS=password
    - CELERY_BROKER=amqp://admin:password@rabbitmq:5672//

networks:
  main:

Dockerfile: Dockerfile:

FROM ubuntu:latest

ENV PYTHONUNBUFFERED=1

RUN apt-get -y update
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 python3.8 python3-pip libapache2-mod-wsgi-py3

RUN pip3 install --upgrade pip

ADD requirements.txt .

RUN pip install -r requirements.txt

ADD ./scraper_project.conf /etc/apache2/sites-available/scraper_project.conf
ADD . /var/www/html/public

WORKDIR /var/www/html/public

RUN chown -R :www-data .
RUN chmod -R 775 . 

EXPOSE 80

RUN a2ensite scraper_project
RUN a2dissite 000-default

CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

Celery settings: Celery 设置:

CELERY_BROKER_URL = os.environ['CELERY_BROKER']

Fixed.固定的。 Problem was that i set up hostname in celery worker.问题是我在 celery 工作人员中设置了主机名。 If someone has similar problem just remove hostname: rabbitmq on celery_worker.如果有人有类似的问题,只需删除 celery_worker 上的主机名:rabbitmq。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM