我在 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”一个
最佳答案
您的假设是正确的,addons
和 config_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/