Ошибка подключения django-redis внутри докера - PullRequest
0 голосов
/ 18 ноября 2018

django views.py

import redis
import jwt
from access import utils
import os
redis_url = os.environ['REDIS_URI']

R = redis.StrictRedis(redis_url)

def set(request):
    R.set('foo', 'bar')
    return JsonResponse({"code":200,"msg":"success"})

docker-compose

version: "3"

services:
  rango:
    container_name: rango
    build: ./
    command: python backend/manage.py runserver 0.0.0.0:8000
    # command: npm start --prefix frontend/rango-frontend/
    working_dir: /usr/src/rango
    environment:
      REDIS_URI: redis://redis_db:6379
    ports:
      - "8000:8000"
    tty: true
    links:
      - elasticsearch
      - node
      - redis

  #elastic search
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.5.0
    ports:
      - "9200:9200"

  #node
  node:
    image: node:10.13.0

  #redis
  redis:
    image: redis
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
    ports:
      - "6379:6379"

здесь я подключаю redis из django внутри докера.это дает мне исключения, от которых отказались.Пожалуйста, посмотрите мой код и общий скриншот ниже

enter image description here

1 Ответ

0 голосов
/ 19 ноября 2018

По умолчанию docker compose позволяет обнаруживать контейнеры с именем хоста, идентичным имени контейнера.Таким образом, ваш контейнер redis доступен для обнаружения через имя хоста redis.Однако ваш контейнер Django использует имя хоста redis_db.

Обновите docker-compose.yml и измените REDIS_URI, указав правильное имя хоста:

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