Развертывание каналов Django с помощью Docker

#python #django #docker #redis #django-channels

#python #django #docker #redis #django-каналы

Вопрос:

Я пытаюсь развернуть каналы django с помощью Docker, и Django, похоже, не находит Redis (который я использую в качестве уровня канала).

Когда я делаю это локально, я просто запускаю redis-server и указываю на него из настроек:

 CHANNEL_LAYERS = {
    'default': {
        'BACKEND': 'channels_redis.core.RedisChannelLayer',
        'CONFIG': {
            'hosts': [('localhost', 6379)],
        },
    },
}
  

Все работает нормально, веб-сокеты принимают соединения и легко передают мои данные. Для производственной среды я использую эту конфигурацию docker:

 version: "3"

services:

  backend:
    container_name: backend
    restart: 'on-failure'
    image: registry.testtesttest.com/app/backend:${BACKEND_VERSION:-latest}
    ports:
      - "8000:8000"
    environment:
      DJANGO_SETTINGS_MODULE: ${DJANGO_SETTINGS_MODULE:-settings.production}
      DJANGO_SECRET_KEY: ${DJANGO_SECRET_KEY:-dev}

    redis:
        image: "redis:alpine"
        ports: 
           -"6379:6379"
  

И я указываю на redis из производственных настроек:

 CHANNEL_LAYERS = {
    'default': {
        'BACKEND': 'channels_redis.core.RedisChannelLayer',
        'CONFIG': {
            'hosts': [('redis', 6379)],
        },
    },
}
  

И в процессе производства Django говорит:

Не удается найти redis на 127.0.0.1:6379

Что я делаю не так? Нужно ли добавлять какие-либо дополнительные сервисы для создания файла docker-compose?

Комментарии:

1. Измените 'localhost' имя контейнера redis.

2. @KlausD. это ‘redis’, локальный хост, который я использую только для среды разработки. В моем ответе есть производственная конфигурация.

3. Имя контейнера обычно содержит подчеркивание в docker-compose.

4. @KlausD. как это должно отображаться для моей настройки docker?

5. docker ps или посмотрите название в выходных данных docker-compose up .

Ответ №1:

Вам нужно предоставить ссылки для серверной части.

 backend:
    container_name: backend
    restart: 'on-failure'
    image: registry.testtesttest.com/app/backend:${BACKEND_VERSION:-latest}
    ports:
      - "8000:8000"
    environment:
      DJANGO_SETTINGS_MODULE: ${DJANGO_SETTINGS_MODULE:-settings.production}
      DJANGO_SECRET_KEY: ${DJANGO_SECRET_KEY:-dev}
    links:
     - redis