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

Flask生产环境中如何通过.env文件传递环境变量配置?

Flask生产环境环境变量配置指南

核心原则:生产环境别依赖.env文件

本地开发用.env是为了便捷,但生产环境绝对不要用.env文件存储敏感变量——一来部署环境(云服务器、容器等)有更安全的原生变量管理机制,二来文件存储敏感数据易泄露,也不利于批量维护。

生产环境变量配置方案

1. 云服务平台内置管理

主流云平台(AWS、阿里云、腾讯云、Heroku等)都提供专门的环境变量/密钥管理功能:

  • 直接在控制台添加键值对(如数据库URL、API密钥),加密存储且权限可控
  • 应用启动时自动将变量加载到os.environ,和本地读取逻辑完全一致,无需修改代码
  • 支持批量修改,不会像文件那样存在泄露风险

2. 容器化部署(Docker/K8s)

如果用容器部署:

  • Docker:单变量用docker run -e KEY=VALUE传递,批量变量可临时用--env-file指定本地文件(别把这个文件打包进镜像);更安全的方式是用Docker Secrets管理敏感数据
  • Kubernetes:用Secret资源存储敏感变量,通过环境变量或挂载卷让Pod读取,避免明文暴露

3. 传统服务器部署

自己搭建VM或物理机时:

  • 在服务器的系统配置文件(如/etc/profile、~/.bashrc)或应用启动脚本中添加export KEY=VALUE语句,重启终端或启动脚本后,os.environ即可读取
  • 用Ansible等配置工具批量推送变量,保证多台机器配置一致

4. GitHub Actions的正确用法

GitHub Actions适合CI/CD环节传递变量,而非生产环境变量存储:

  • 在仓库「Settings → Secrets and variables → Actions」中添加批量敏感变量,加密存储
  • 在Workflow文件中用${{ secrets.KEY_NAME }}引用,比如部署时传递给服务器或容器
  • 注意:这只是传递手段,生产环境变量最终要存在部署环境的安全存储中,别让Actions直接写入生产服务器的文件

代码适配建议

你用了应用工厂模式,保持现有代码逻辑即可——继续用os.environ.get("KEY_NAME")读取变量,生产环境的变量会自动加载到环境中,无需额外修改。示例:

def create_app():
    app = Flask(__name__)
    app.config["DATABASE_URL"] = os.environ.get("DATABASE_URL")
    app.config["SECRET_KEY"] = os.environ.get("SECRET_KEY")
    # 其他配置逻辑
    return app

关键注意事项

  • 永远不要将生产环境敏感变量提交到代码仓库,哪怕是加密后的文件
  • 生产环境必须关闭FLASK_DEBUG,可通过设置FLASK_ENV=production或代码中强制app.debug = False实现
  • 定期轮换敏感变量(如数据库密码、API密钥),利用平台批量修改功能提升效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 08:23:17