我试图从heroku应用程序配置中读取用于战争构建的Grails环境,这是可能的,在这种情况下如何做到这一点?它是在ENV变量中设置的吗?
答案 0 :(得分:1)
不,这是不可能的。 Buildpacks独立于配置运行。 (为了说服自己,运行heroku config:set
并观察输出:没有slug编译器。)这与12-Factor App的Build, Release, Run方面一致,它严格区分构建(slug编译器和buildpack) ),释放(将构建附加到其配置),并运行(为给定版本旋转dynos)。
通常的解决方案是让您的buildpack发出读取环境的文件,并在运行时正确地执行操作。例如,Rails从config/database.yml
读取数据库配置,而Heroku在ENV['DATABASE_URL']
中指定此配置。因此,buildpack生成一个文件using this template,导致Rails使用配置中指定的数据库,允许更改配置而无需重新构建整个应用程序。