【发布时间】:2021-07-30 07:49:18
【问题描述】:
我尝试通过我的 github 存储库在 heroku 上部署我的一个项目。我有一个 .env 文件,其中包含我的 API 密钥和私有令牌。我想公开我的回购协议,但这意味着向所有人公开我的 .env 文件。我尝试搜索如何为 heroku 设置 .env ,但发现的答案让我更加困惑。那么,当我从我的 github 存储库中删除它们时,有没有办法将我的环境变量提供给 herkou?
【问题讨论】:
我尝试通过我的 github 存储库在 heroku 上部署我的一个项目。我有一个 .env 文件,其中包含我的 API 密钥和私有令牌。我想公开我的回购协议,但这意味着向所有人公开我的 .env 文件。我尝试搜索如何为 heroku 设置 .env ,但发现的答案让我更加困惑。那么,当我从我的 github 存储库中删除它们时,有没有办法将我的环境变量提供给 herkou?
【问题讨论】:
您的.env 密钥是保密的,应该保密。不要害怕,您可以公开您的存储库,并且仍然保密您的密钥。
在后面,.env 文件是一个隐藏文件。在将其推送到版本控制之前,您应该忽略此文件。在您的顶级目录中添加一个.gitignore 文件,并提供您希望从版本控制中忽略的所有文件。您可以查看here 以查看您可能希望忽略哪些文件。
如果您已经将密钥提交到 github,这意味着在线有这些密钥的可用副本,我建议您为 .env 文件中的每个变量生成新密钥。这将是最简单的方法。如果.env 文件已经列在.gitignore 中,那么您的下一次提交将从版本控制中忽略该文件及其内容。
.env文件假设您有一个如下所示的简单结构,其中您的 .env 和 config.py 文件位于顶级目录中:
project
| --- .env
| --- config.py
| --- requirements.txt
| --- app/
首先,您需要在虚拟环境中安装python-dotenv。这个包有助于加载环境变量。
(venv)$ pip3 install python-dotenv && pip3 freeze > requirements.txt
在你的配置模块中,加载.env:
# config.py
import os
from dotenv import load_dotenv
load_dotenv('.env')
class Config(object):
SECRET_KEY = os.environ.get('SECRET_KEY')
你的.env 文件应该有这个键:
# .env
SECRET_KEY=<you-will-never-guess>
在你的终端中,你可以设置.env的值:
(venv)$ heroku config:set SECRET_KEY=<you-will-never-guess>
为了帮助对您的应用感兴趣的用户了解他们在本地测试应用时需要哪些密钥,请创建一个名为 .env-template 的文本文件,并在不传递实际值的情况下创建您的环境变量:
# .env-template
SECRET_KEY=
【讨论】: