【问题标题】:Is there a way to obtain production environment variables from Heroku?有没有办法从 Heroku 获取生产环境变量?
【发布时间】:2019-08-14 10:54:33
【问题描述】:

我正在尝试通过heroku local 命令在本地运行heroku。但是,这并没有使用heroku config 中的环境变量。

当我运行heroku local 时,我希望我的本地服务器使用在heroku config 中找到的相同环境变量。

我希望我的本地服务器模仿真实世界的服务器;这就是为什么我要这样做。

【问题讨论】:

    标签: heroku flask heroku-cli


    【解决方案1】:

    环境变量的全部意义在于它们是特定于环境的。在许多情况下,在开发中使用与生产中相同的数据库没有多大意义(例如,您的开发数据库可能与您的生产数据库不同,并且您可能真的不想在开发中发送电子邮件)。

    无论如何,heroku local 支持从.env 文件加载环境变量。你可以create a local .env file from your production environment variables:

    有时您可能希望在本地和 Heroku 环境中使用相同的配置变量。对于要添加到 .env 文件的每个配置变量,请使用以下命令:

    heroku config:get CONFIG-VAR-NAME -s  >> .env
    

    不要将.env 文件提交到源代码管理。它应该只用于本地配置。更新您的 .gitignore 文件以排除 .env 文件。

    请记住,您部署的生产应用可能连接到与本地开发应用不同的服务。例如,您部署的生产应用程序可能具有引用 Heroku Postgres 数据库的 DATABASE_URL 配置变量,但您的本地应用程序可能在 .env 文件中具有引用您本地安装的 Postgres 的 DATABASE_URL 变量。

    【讨论】:

    • 主要问题是 Heroku 会时常轮换 API 密钥。因此,每隔一段时间就必须运行该命令会非常不方便。
    • @echo,我不确定 Heroku 会轮换哪些 API 密钥,您需要在开发中使用这些密钥。但这是官方推荐的方法,值得我认为这是一个很好的方法。随意阅读整个链接页面,了解更多背景和推理。
    • API 密钥是对数据库的访问。 Heroku 自己提供的数据库都声称可以轮换它们的密钥。
    • 好的,但为什么要连接到开发机器上的 Heroku 数据库?您应该(几乎)肯定使用专用的开发数据库。想象在您的开发机器上出现错误并破坏您的生产数据库。还有 很多 其他非常好的理由使用单独的数据库进行开发(用于模式更改和拥有少量本地、精选数据是我的两个想法)。跨度>
    • @echo,这回答了你的问题吗?您是否仍打算从开发机器连接到生产数据库,还是决定使用本地数据库?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2019-07-10
    • 1970-01-01
    • 2019-07-19
    • 2021-11-19
    • 1970-01-01
    • 2020-10-29
    相关资源
    最近更新 更多