Heroku.yml 文件。如何从 .env 文件传递​​环境变量?

Posted

技术标签:

【中文标题】Heroku.yml 文件。如何从 .env 文件传递​​环境变量?【英文标题】:Heroku.yml file. How to pass environment variables from .env file? 【发布时间】:2021-11-19 12:33:33 【问题描述】:

我一直在寻找这个解决方案,但目前有关 heroku.yml 文件的文档非常有限。

我有这个 heroku.yml 文件:

build:
  docker:
    web: Dockerfile
  config:
    SECRET_KEY: django-secret-key

setup:

  addons:
  - plan: heroku-postgresql
    as: DATABASE
  config:
    DB_NAME: database-name

我在.env 文件中有我的环境变量。我不希望任何人访问它们。这个.env 文件被添加到.gitignore.dockerignore 文件中。问题是,如果我将它们硬编码到 heroku.yml 文件,它们将可以从 gitdocker 容器

访问

我的问题是下一个,有没有办法将这些环境变量从.env 文件传递​​到heroku.yml 文件而不用硬编码?

【问题讨论】:

【参考方案1】:

您需要在heroku.yml 中将env_file: .env 添加到setup.config,然后在设置中将您的配置变量添加到heroku

我的heroku.yml示例

setup:
  config:
    env_file: .env # <-- important line
build:
  docker:
    web: Dockerfile
run:
  web: npm run start

这个heroku.yml 应该适合你:

setup:
  addons:
  - plan: heroku-postgresql
    as: DATABASE
  config:
    env_file: .env
build:
  docker:
    web: Dockerfile

【讨论】:

env_file: .env 是做什么的?如果配置变量没有出现在 Heroku 上,我认为它没有任何作用。【参考方案2】:

您的.env 不应提交,因此 Heroku 将无法访问它。您通常会手动或通过 CLI 一个接一个地设置环境变量。您可以从 .env 文件自动设置它们:

xargs -a .env -I  heroku config:set 

【讨论】:

以上是关于Heroku.yml 文件。如何从 .env 文件传递​​环境变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何调试使用 whitenoise、gunicorn 和 heroku 服务的 django 静态文件?

如何配置 heroku.yml 以使用 Heroku PostgreSQL 插件?

如何避免从 process.env 文件中获取错误数据?

Shell如何从.env文件设置环境变量

如何从 .env 文件中获取键的值?

如何从.env文件获取环境变量到docker-compose.yml?