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 № 1Vous 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.