使用Docker部署Django频道

时间:2019-03-27 19:28:02

标签: python django docker redis django-channels

我正在尝试通过Docker部署Django通道,而Django似乎找不到Redis(我将其用作通道层)。

在本地进行操作时,我只运行redis-server并从设置中指向它:

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

一切正常,Web套接字接受连接并可以轻松传输我的数据。对于生产环境,我使用以下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说:

  

在127.0.0.1:6379上找不到redis

我在做什么错?我是否需要添加任何其他服务来做docker-compose文件?

1 个答案:

答案 0 :(得分:0)

您需要提供后端链接。

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