Невозможно подключить Redis из Python внутри Docker-контейнера - PullRequest
0 голосов
/ 11 июня 2019

Dockerfile

FROM python:3.6-slim

ENV PYTHONUNBUFFERED 1
WORKDIR /usr/src/duck

COPY ./ /usr/src/duck

RUN apt-get update
RUN apt-get install -y redis-server

RUN pip install -r requirements.txt

CMD ["/bin/bash","-c","python manage.py runserver 0.0.0.0:8000"]

код питона:

import redis
red = redis.StrictRedis(host="redis", port=6379, db=0)
red.set("working", "yes")

Здесь я пытаюсь докеризировать и Python, и Redis. Выше мой Dockerfile и код Python.

выкидывает меня ниже ошибки:

во время выполнения кода Python.

Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/src/duck/settings/views.py", line 6, in check_redis
    red.set("working", "yes")
File "/usr/local/lib/python3.6/site-packages/redis/client.py", line 1451, in set
    return self.execute_command('SET', *pieces)
File "/usr/local/lib/python3.6/site-packages/redis/client.py", line 772, in execute_command
    connection = pool.get_connection(command_name, **options)
File "/usr/local/lib/python3.6/site-packages/redis/connection.py", line 994, in get_connection
    connection.connect()
File "/usr/local/lib/python3.6/site-packages/redis/connection.py", line 497, in connect
    raise ConnectionError(self._error_message(e))
redis.exceptions.ConnectionError: Error -2 connecting to redis:6379. Name or service not known.

Пожалуйста, посмотрите.

1 Ответ

2 голосов
/ 11 июня 2019

Контейнер работает только на сервере python, а не на redis.Вы должны запустить сервер Redis в другом контейнере (вероятно, подойдет изображение Redis по умолчанию)И заставьте сервер Python указывать на него.

Вам повезло, потому что у составных документов есть пример с приложением Python и сервером Redis.https://docs.docker.com/compose/gettingstarted/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...