Почему изменение пакета сборки heroku для существующего приложения не запускает bin/release
У меня было приложение php на heroku с пакетом сборки по умолчанию (apache), а затем я решил изменить его на пакет сборки php-fpm + nginx ( 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
Затем слаг компилируется, но все двоичные файлы не выполняются с "командой не найдена", потому что переменная конфигурации PATH, которая должна быть обновлена с помощью bin/release, не обновляется.
Для сравнения, при создании приложения с нуля с этим buildpack с
heroku create -b https://github.com/iphoting/heroku-buildpack-php-tyler.git
Все работает как ожидалось (и PATH присутствует и обновляется).
Я предполагаю, что bin/release не был запущен после изменения переменной конфигурации BUILDPACK_URL, и, следовательно, переменная PATH не установлена.
Чтобы приложение работало, мне пришлось вручную добавить переменную конфигурации PATH. Кто-нибудь еще сталкивался с этим? Это ожидаемое поведение? Насколько я понимаю, bin/release всегда должен запускаться после компиляции slug?
РЕДАКТИРОВАТЬ: исправил URL-адрес git для правильного ".git"
2 ответа
Вы правы в своем предположении, addons
а также config_vars
свойства bin/release
берутся только из пакета сборки при первом развертывании приложения. См. https://devcenter.heroku.com/articles/buildpack-api для получения более подробной информации.
Heroku переходит на новую систему для пакета сборки, чтобы добавить конфигурационные переменные, которые будут работать после первого развертывания приложения: https://devcenter.heroku.com/articles/labs-dot-profile-d
Если buildpack копирует .profile.d/buildpack_name.sh
в приложение, этот файл будет получен во время загрузки приложения. Это может быть использовано для настройки таких вещей, как PATH
,
Возможно, в вашем хранилище приложений есть Procfile. Если у вас есть Procfile, bin / release не будет перезаписывать его содержимое. Просто скопируйте соответствующие строки (5-9) из https://github.com/iphoting/heroku-buildpack-php-tyler/blob/master/bin/release в ваш Procfile.