我的应用程序正在使用laravel 8。我将它从github部署到heroku,并希望运行以下命令:
php artisan optimize
但是我不知道如何在heroku中运行这个命令,如果这个命令在我的应用程序中创建了缓存文件,heroku会在特定时间后删除它们,因为它们不是从github部署的永久文件。任何人都知道如何处理这个问题,请告诉我该怎么做。谢谢!
P/S:我试图做像下面的链接,但它没有在我的应用程序中创建任何缓存文件。https://dev.to/autoidle/laravel-deployment-optimization-on-heroku-1hkc
[new更新]问题解决了。只要按照上面的链接和我的答案在下面。
2条答案
按热度按时间nfs0ujit1#
Heroku使用一个临时文件系统,这意味着在dyno运行时对文件系统的任何更改都只会持续到dyno关闭或重新启动。每个dyno都使用最近部署的文件系统的干净副本启动。这与许多基于容器的系统(如Docker)的操作类似。
解决这个问题的方法是使用Redis作为缓存(也可以用于会话、队列等)
1.添加到您的Heroku环境:
CACHE_DRIVER=redis
composer require ext-json
1.安装Redis作为附加组件,例如:https://elements.heroku.com/addons/heroku-redis
fquxozlt2#
[new update]您可以按照下面的链接执行完全相同的操作,但您需要将Procfile的部分从composer warmup修复为composer run-script warmup。这样就可以解决此线程中的问题。https://dev.to/autoidle/laravel-deployment-optimization-on-heroku-1hkc
composer.json:
过程文件:
enter image description here