You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置docker-compose让Django服务正确读取SECRET_KEY环境变量

错误原因

Docker容器运行时默认隔离宿主机的环境变量,因此你Windows本地系统中配置的DJANGO_SECRET_KEY无法直接被容器内的Django服务读取,才会抛出密钥为空的配置错误。

解决方案

方案1:直接传递宿主机环境变量到容器

在你现有的docker-compose.yml的django服务配置块中添加environment字段,直接引用宿主机的DJANGO_SECRET_KEY环境变量即可,修改后的完整配置如下:

version: "3.8"

services:
  django:
    build: .
    container_name: django
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/usr/src/app
    ports:
      - "8000:8000"
    depends_on:
      - db
    # 新增environment配置,注入环境变量
    environment:
      - DJANGO_SECRET_KEY=${DJANGO_SECRET_KEY}

  db:
    image: postgres
    container_name: pgdb
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres

该方案无需额外新增文件,直接复用你本地已经配置好的系统环境变量。

方案2:通过.env文件统一管理环境变量

如果项目有多个需要传递的环境变量,更推荐用.env文件管理:

  1. 在docker-compose.yml同级目录下新建名为.env的文件,写入内容:
DJANGO_SECRET_KEY=替换为你自己的Django密钥值
  1. 修改docker-compose.yml的django服务配置,新增env_file字段导入整个文件的变量:
django:
    build: .
    container_name: django
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/usr/src/app
    ports:
      - "8000:8000"
    depends_on:
      - db
    # 新增env_file配置,导入.env文件的所有环境变量
    env_file:
      - .env

注意:务必将.env文件添加到.gitignore规则中,避免密钥提交到代码仓库泄露。

生效操作

修改配置后执行以下命令重启容器即可生效:

docker-compose up -d --force-recreate

内容的提问来源于stack exchange,提问作者Joseph Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:39:03