Как кешировать настройки в Laravel внутри Heroku? то есть сборка отличается от времени выполнения

В документах Laravel рекомендуется запускать ./artisan config:cache в производстве, чтобы ускорить процесс. Это здорово с Heroku, так как каждая сборка поднимает новое состояние файловой системы, поэтому нам даже не нужно заботиться о том, чтобы очистить кеш между развертываниями.

НО: если вы добавите эту команду в процедуру развертывания (например, через Composer), ваше приложение Laravel начнет падать, так как будет искать файлы в уже ушедших путях сборки (что-то вроде /tmp/random_string). Если вы бежите heroku run pwd вы заметите, что приложение во время выполнения живет /app,

Похоже на то ./artisan config:cache сохраняет временный путь сборки в кэшированных настройках, а приложение запускается по другому пути. Можно ли изменить путь, используемый в полученном конфиге конфигурации?

7

Решение

Лучше всего делать это при загрузке, а не во время сборки.
Для этого вам нужно изменить ваш composer.json, добавив:

"warmup": [
"php artisan config:cache",
"php artisan route:cache"],

А затем измените ваш procfile что-то вроде web: composer warmup && $(composer config bin-dir)/heroku-php-apache2 public/

Кредиты за чаевые достаются Дэвиду от поддержки Heroku!

8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]