【发布时间】:2015-02-21 05:17:40
【问题描述】:
目前,我有一个带有配置文件的网络应用程序。配置文件具有变量的全局声明,例如domain_name、redis_url 等。但是,当用户在他们的 Heroku 帐户上部署应用程序时,他们必须手动更改这些设置以匹配他们的环境。是否可以让 heroku 运行一个部署后脚本,用 heroku 属性替换这些设置?
【问题讨论】:
标签: heroku
目前,我有一个带有配置文件的网络应用程序。配置文件具有变量的全局声明,例如domain_name、redis_url 等。但是,当用户在他们的 Heroku 帐户上部署应用程序时,他们必须手动更改这些设置以匹配他们的环境。是否可以让 heroku 运行一个部署后脚本,用 heroku 属性替换这些设置?
【问题讨论】:
标签: heroku
起点是Heroku Environment Variables,您的应用可能已经在使用它。如果没有,那么我强烈建议这样做。
然后我看到两个选项,具体取决于配置文件类型:
如果配置文件是脚本文件,可以直接读取环境变量,问题就解决了。
如果配置文件是文本文件,则必须先生成。您可以通过创建放入应用程序存储库中的生成器脚本来实现这一点。出于解释的目的,我们假设您的 Web 应用程序是基于 Python 的。您可以创建文件 bin/generate_config.py 并将其添加到 repo。然后在这个生成器中,您从系统中读取变量并创建文本配置文件。
接下来您需要做的就是修改您的Procfile。让我们假设它看起来像这样:
web: python manage.py runserver 0.0.0.0:${PORT}
您需要将其更改为:
web: python bin/generate_config.py & python manage.py runserver 0.0.0.0:${PORT}
它将首先生成配置文件,然后启动您的应用程序。
您必须对您的网络应用语言采用我的解决方案,但总体思路是相同的。
希望对你有所帮助。
【讨论】: