【发布时间】:2019-08-18 11:39:01
【问题描述】:
我正在尝试使用 Docker 部署 django 通道,但 Django 似乎找不到 Redis(我将其用作通道层)。
当我在本地执行此操作时,我只需运行 redis-server 并从设置中指向它:
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
'hosts': [('localhost', 6379)],
},
},
}
一切正常,网络套接字正在接受连接并轻松传输我的数据。对于生产环境,我使用这个 docker config:
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 文件?
【问题讨论】:
-
把
'localhost'改成redis容器名。 -
@KlausD。它是'redis',我仅用于开发环境的本地主机。我的答案中有一个生产配置。
-
容器名在docker-compose中通常包含下划线。
-
@KlausD。我的 docker 设置应该如何显示?
-
docker ps或查看docker-compose up的输出中的名称。
标签: python django docker redis django-channels