python - 使用 Docker 部署 Django 频道
问题描述
我正在尝试使用 Docker 部署 django 通道,而 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 说:
在 127.0.0.1:6379 上找不到 redis
我究竟做错了什么?我是否必须添加任何额外的服务来做 docker-compose 文件?
解决方案
您需要提供后端链接。
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
推荐阅读
- kotlin - 如何修复 30.0.2 缺失
- ios - 变量不保留其值
- c++ - 如何获取从 parquet 文件中读取的数据的行视图?
- next.js - 如何保护通过url直接访问next js中未经身份验证的静态页面?
- google-cloud-build - Google Cloud Build - 自定义机器类型不起作用
- flutter - 在flutter中与api分开显示pdf和图像的列表
- android - 如何屏蔽 TextField 以在 Jetpack Compose 中显示 dd/mm/yyyy 日期格式?
- angularjs - 为什么 'ng' 属性在 HTML 标签中不起作用?
- tensorflow - 如何停止 PNG 警告:iCCP:已知不正确的 sRGB 配置文件打印到控制台?
- c - 如何在C中使用多个分隔符进行拆分