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

如何在Docker/docker-compose中便捷使用环境变量(Django项目场景)

你之前操作无效的核心原因有两个:

  1. docker exec -e 注入的环境变量仅对本次 exec 启动的会话/命令生效,容器内已经启动的 Django 进程在启动时就完成了环境变量加载,不会读取后续注入的新变量,因此 Stripe 无法读取到密钥
  2. 不带命令直接执行 docker exec -e stripeAPI=(secret key) <container_id> 会报错,因为 exec 必须指定要在容器内运行的命令,你之前追加 echo、bash 等于补全了命令参数,因此可以正常执行,但仅生效于当前会话。
最便捷的环境变量配置方案

1. Docker 原生运行场景

两种常用方式,按需选择:

  • 启动容器时直接注入变量,适合变量少的场景
    启动命令示例:
    docker run -e stripeAPI="你的Stripe密钥" -p 8000:8000 你的Django镜像名称
    
  • 通过.env文件批量注入,适合多变量场景,可直接复用本地开发的.env文件,不需要修改代码
    第一步:在项目根目录新建.env文件,写入变量:
    stripeAPI=sk_xxxxxxxxxx
    # 其他需要的环境变量都可以往下加
    
    第二步:启动时指定env文件:
    docker run --env-file .env -p 8000:8000 你的Django镜像名称
    

2. docker-compose 运行场景(更推荐)

两种常用配置方式:

  • 直接在docker-compose.yml中配置:
    version: '3'
    services:
      django:
        build: .
        ports:
          - "8000:8000"
        environment:
          - stripeAPI=你的Stripe密钥
          # 其他环境变量往下追加即可
    
  • 读取本地.env文件(最推荐,密钥不会写到配置文件里,避免误提交到代码仓库):
    version: '3'
    services:
      django:
        build: .
        ports:
          - "8000:8000"
        env_file: .env
    
    直接复用本地开发用的.env文件即可,不需要修改配置。
验证生效方法

配置完成后重启容器,执行以下操作确认变量生效:

  • 进入容器执行 echo $stripeAPI,确认输出为你的密钥
  • 可以在Django代码中临时加一行打印逻辑验证:
    import os
    print(os.environ.get("stripeAPI"))
    
    启动容器后访问对应服务,查看控制台输出是否正确打印密钥即可。

注意:所有环境变量修改后都需要重启容器才能生效,运行中的进程不会实时读取新的环境变量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:54:02