Я пытаюсь использовать Redis в качестве брокера для Celery для моего проекта Django, который использует Docker Compose. Я не могу понять, что именно я сделал неправильно, но, несмотря на то, что сообщения в консольном журнале сообщают мне, что Redis работает и принимает соединения (и действительно, когда я делаю docker ps
, я вижу, что контейнер работает), Я все еще получаю сообщение об отказе в подключении. Я даже сделалRedis + Docker + Django - Ошибка 111 Connection Refused
docker exec -it <redis_container_name> redis-cli
ping
и увидел, что ответ был PONG
.
Вот настройки сельдерея в моем settings.py
:
BROKER_URL = 'redis://localhost:6379/0'
BROKER_TRANSPORT = 'redis'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ENABLE_UTC = True
CELERY_TIMEZONE = "UTC"
Вот настройки контейнера Redis в моем docker-compose.yml
:
redis:
image: redis
ports:
- "6379:6379"
Я вспомнил связать redis
контейнер с моим web
контейнера, а также , Я могу запустить сервер просто отлично, но я получаю сообщение об ошибке отказа, когда я пытаюсь загрузить что-либо на сайт. Что именно происходит неправильно?
EDIT: Я вспомнил использовать VBoxManage порт вперед таким образом, что я могу пойти в браузере и получить доступ к своему сайту на localhost:8000
, так что это не похоже, мне нужно использовать IP ВМ вместо localhost
для моего settings.py
.
EDIT 2: Если я заменю localhost
в настройках или с IP-адресом docker-machine
VM или IP-адрес контейнера Redis, то, что происходит в том, что я очень быстро получить ложное сообщение успеха на моем сайте когда я загружаю файл, но потом ничего не загружается. Основная функция загрузки, insertIntoDatabase()
, использует delay
.
Вы используете boot2docker?Если да, вы должны использовать команду boot2docker ip для получения IP-адреса VM-сервера докерера и использовать его вместо localhost. –
^У меня была такая же проблема и была описана выше: мне пришлось использовать запись IP-адреса в/etc/hosts /, созданную докер-Compose. – erewok
Вы пытались заменить 'localhost' на' redis' в файле settings.py, потому что у вас уже есть опция '--link', когда вы запускаете веб-контейнер. – BMW