Docker部署Django应用Debug模式不生效,如何开启Debug=True?
解决Docker容器中Django DEBUG模式不生效的问题
问题根源
- DEBUG判断逻辑不匹配:你的
settings.py中判断DEBUG = os.environ.get('DEBUG') == "True",但环境变量传递的是DEBUG=1(字符串"1"),两者不相等,导致DEBUG被设为False。 - ALLOWED_HOSTS变量名不匹配:
.env文件中用的是DJANGO_ALLOWED_HOSTS,但settings.py中尝试获取ALLOWED_HOSTS环境变量,导致ALLOWED_HOSTS为空。当DEBUG=False时,Django要求必须设置ALLOWED_HOSTS,因此触发报错。
修复步骤
1. 修改settings.py中的DEBUG判断逻辑
将原代码:
DEBUG = os.environ.get('DEBUG') == "True"
替换为兼容"1"和"True"的判断:
DEBUG = os.environ.get('DEBUG', '0') in ('1', 'True')
2. 修正ALLOWED_HOSTS的环境变量获取
原代码中变量名不匹配,且.env里用空格分隔主机名,需调整分割方式:
ALLOWED_HOSTS = [] ALLOWED_HOSTS_ENV = os.environ.get('DJANGO_ALLOWED_HOSTS') if ALLOWED_HOSTS_ENV: ALLOWED_HOSTS.extend(ALLOWED_HOSTS_ENV.split()) # 按空格分割主机名
3. 可选:统一数据库名称(避免潜在连接问题)
你的db服务中POSTGRES_DB=dzijn,但app服务的DB_NAME=zijn,两者不一致会导致数据库连接失败,建议改为统一值:
- 将
docker-compose.yml中db服务的POSTGRES_DB改为zijn - 或修改
app服务的DB_NAME为dzijn
验证修复
重新启动容器:
docker-compose down && docker-compose up --build
此时Django应会以DEBUG=True模式启动,模板加载和ALLOWED_HOSTS的问题也会一并解决。
内容的提问来源于stack exchange,提问作者mightycode Newton
相关产品推荐
相关产品推荐

