[英]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.