/ / Pourquoi changer heroku buildpack pour une application existante ne lance pas bin / release - heroku, release, slug, buildpack

Pourquoi changer heroku buildpack pour une application existante ne lance pas bin / release - heroku, release, slug, buildpack

J'avais une application php sur heroku avec le buildpack par défaut (apache), puis j'ai décidé de la changer pour le buildpack php-fpm + nginx (https://github.com/iphoting/heroku-buildpack-php-tyler/).

J'ai émis la commande de changement:

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

Et poussé avec:

git push heroku master

Le slug se compile ensuite, mais tous les fichiers binaires échouent avec "commande introuvable", car la variable de configuration PATH qui doit être mise à jour avec bin / release n'est pas "mise à jour.

En comparaison, lors de la création d'une application à partir de zéro avec ce buildpack avec

heroku create -b https://github.com/iphoting/heroku-buildpack-php-tyler.git

Tout se passe comme prévu (et PATH est présent et mis à jour).

Mon hypothèse est que bin / release n’a pas été exécuté après la modification de la variable de configuration BUILDPACK_URL et que, par conséquent, la variable PATH n’est pas définie.

Afin de faire fonctionner l'application, j'ai dû manuellementajoutez la variable de configuration PATH. Est-ce que quelqu'un d'autre a déjà rencontré cela? Est-ce le comportement attendu? Si je comprends bien, bin / release devrait toujours être exécuté après une compilation slug?

EDIT: corrigé l'URL du git au ".git" correct

Réponses:

4 pour la réponse № 1

Vous avez raison dans votre hypothèse, le addons et config_vars propriétés de bin/release ne sont extraites d’un buildpack que lors du premier déploiement d’une application. Voir https://devcenter.heroku.com/articles/buildpack-api#binrelease pour plus de détails.

Heroku passe à un nouveau système permettant à un buildpack d’ajouter des paramètres de configuration qui volonté travailler au-delà du premier déploiement d’une application: https://devcenter.heroku.com/articles/labs-dot-profile-d

Si un buildpack copie un .profile.d/buildpack_name.sh dans l'application, ce fichier sera recherché lors du démarrage de l'application. Cela peut être utilisé pour mettre en place des choses comme le PATH.


0 pour la réponse № 2

Vous avez probablement un fichier Procfile dans votre référentiel d'applications. Si vous avez un fichier Procfile existant, bin / release n’écrasera pas son contenu. Copiez simplement les lignes appropriées (5-9) de https://github.com/iphoting/heroku-buildpack-php-tyler/blob/master/bin/release dans votre Procfile.