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

标签 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 配置变量未更新。

相比之下,当使用此构建包从头开始创建应用程序时
heroku create -b https://github.com/iphoting/heroku-buildpack-php-tyler.git

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

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

为了使应用程序正常工作,我必须手动添加 PATH 配置变量。有没有其他人遇到过这种情况?这是预期的行为吗?根据我的理解,bin/release 应该总是在 slug 编译后运行?

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

最佳答案

您的假设是正确的,addonsconfig_vars bin/release 的属性仅从应用程序首次部署时的构建包中获取。见 https://devcenter.heroku.com/articles/buildpack-api#binrelease更多细节。

Heroku 正在迁移到构建包的新系统以添加配置变量,这些变量将在应用程序的第一次部署之后工作:https://devcenter.heroku.com/articles/labs-dot-profile-d

如果 buildpack 复制了 .profile.d/buildpack_name.sh进入应用程序,该文件将在应用程序启动期间获取。这可用于设置诸如 PATH 之类的内容。 .

关于heroku - 为什么为现有应用程序更改 heroku buildpack 不会运行 bin/release,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13799636/

相关文章:

ruby-on-rails - 我是否正确地在 Heroku + Unicorn 中预加载了应用程序?

ruby-on-rails - 如何将Rails开发服务器设置为Webrick而不是Puma

ios - 已安装的应用程序呈灰色且无法打开

php - 仅使用单连字符定界符将字符串转换为 slug

python - 如何使用 slug 形成 url

c# - C# 中的 Slugify 和字符音译

python - Heroku:使用 RQ 在 Python 中执行后台任务

ruby-on-rails - Firefox 不呈现来自 CloudFront 的字体

.net - VS 2015移动文件后无法运行发布

deployment - 黑莓部署和发布流程