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
文件,它们将可以从 git 和 docker 容器
我的问题是下一个,有没有办法将这些环境变量从.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 静态文件?