为什么更改现有应用程序的heroku buildpack不会运行bin / release

时间:2012-12-10 11:00:53

标签: heroku release slug buildpack

我在heroku上使用默认的buildpack(apache)创建了一个php应用程序,然后决定将其更改为php-fpm + nginx buildpack(https://github.com/iphoting/heroku-buildpack-php-tyler/)。

我发出了更改命令:

heroku config:set BUILDPACK_URL=https://github.com/iphoting/heroku-buildpack-php-tyler.git

并推动:

git push heroku master

然后编译slug,但所有二进制文件都无法使用“未找到命令”执行,因为不应更新应使用bin / release更新的PATH配置变量。

相比之下,使用

这个buildpack从头开始创建应用程序时
heroku create -b https://github.com/iphoting/heroku-buildpack-php-tyler.git

一切都按预期运行(并且PATH存在并更新)。

我的假设是在更改配置变量BUILDPACK_URL后没有运行bin / release,因此未设置PATH变量。

为了使应用程序正常工作,我不得不手动添加PATH配置变量。有没有人见过这个?这是预期的行为吗?根据我的理解,bin / release应该总是在slug编译后运行?

编辑:将git网址更正为正确的“.git”一个

2 个答案:

答案 0 :(得分:4)

您的假设是正确的,addons的{​​{1}}和config_vars属性仅取自应用首次部署的buildpack。有关详细信息,请参阅https://devcenter.heroku.com/articles/buildpack-api#binrelease

Heroku正在转移到一个新系统,用于构建包以添加在应用首次部署之后工作的配置变量:https://devcenter.heroku.com/articles/labs-dot-profile-d

如果buildpack将bin/release复制到应用程序中,则该文件将在应用程序启动期间获取。这可用于设置.profile.d/buildpack_name.sh

等内容

答案 1 :(得分:0)

您的应用程序存储库中可能有一个Procfile。如果您有现有的Procfile,则bin / release不会覆盖其内容。只需将https://github.com/iphoting/heroku-buildpack-php-tyler/blob/master/bin/release中相应的行(5-9)复制到Procfile中即可。