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

如何将.env文件的环境变量传入Heroku.yml而无需硬编码

解决方案

Heroku本身不支持直接从.env文件读取变量自动填充heroku.yml,你可以通过以下三种方案避免硬编码敏感值:

  • 优先使用Heroku应用级配置变量
    这是官方最推荐的安全方案,你可以完全删掉heroku.yml中build.config和setup.config下的敏感配置项,直接通过Heroku CLI为应用设置全局环境变量,这些变量会自动在构建、部署和运行阶段生效,不需要写入heroku.yml文件。
    操作命令示例:

    # 批量导入.env中所有变量到Heroku应用配置
    heroku config:set $(cat .env | grep -v '^#' | xargs)
    

    配置完成后正常触发部署即可,所有变量会自动注入到应用环境,不存在代码仓库泄露风险。

  • 本地动态生成heroku.yml部署
    如果你的部署流程必须在heroku.yml中定义配置项,可以通过模板+本地脚本的方式实现:

    1. 先创建heroku.yml模板文件heroku.yml.template,将敏感值位置替换为占位符,比如SECRET_KEY: {{SECRET_KEY}}
    2. 编写简单的shell脚本,读取.env文件的变量值替换模板中的占位符,生成临时的heroku.yml文件
    3. 将临时生成的heroku.yml加入.gitignore,部署完成后可直接删除,避免意外提交
      示例替换命令(使用envsubst工具):
    # 读取.env变量替换模板生成可用的heroku.yml
    export $(cat .env | grep -v '^#' | xargs) && envsubst < heroku.yml.template > heroku.yml
    
  • Docker构建时直接传参
    如果你采用Docker部署,构建阶段需要的变量可以直接通过命令行传递,不需要写入heroku.yml:

    # 从.env读取SECRET_KEY作为构建参数推送镜像
    heroku container:push web --build-arg SECRET_KEY=$(grep SECRET_KEY .env | cut -d '=' -f2)
    

内容的提问来源于stack exchange,提问作者G A L A X Y

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:15:04