我有一个使用 heroku-buildpack-perl 在那里运行的小应用程序构建包。只是一个小Plack应用程序,它已经运行了大约两年。
但是,Heroku 告诉我它运行的堆栈太旧了,我需要升级它。 “只需运行一个新的部署,应用程序就会安装到一个新的堆栈中!”说他们或类似的东西。
我通过在 git 存储库中创建一个空提交来启动一个新部署,部署运行......但应用程序崩溃了。从日志中我意识到他们更新了 Perl 版本,但部署没有更新我的 XS 库(我使用 local::lib ,不确定这是否是 buildpack 的一部分,或者我当时在创建应用程序时手动设置了它)。
最后,我删除了该应用程序并在新堆栈上重新创建它,运行正常。我不会在任何地方保存任何数据,所以这不是问题。但是,更新堆栈的正确方法是什么?应该有一个选项告诉 Heroku 重建依赖项,对吧?
交叉发布到 PerlMonks .
最佳答案
设置 Heroku 堆栈。在这种情况下到 heroku-20
相当于 Ubuntu 20.04
$ heroku stack:set heroku-20
由于您使用的是不同的堆栈,旧缓存可能不兼容。清除缓存:$ heroku plugins:install heroku-builds
$ heroku builds:cache:purge -a appname
触发重建:$ git commit --allow-empty -m "Purge cache"
$ git push heroku master
笔记:您必须确保您使用的 buildpack 与
heroku-20
兼容。 .如果不是,它将无法工作。您将不得不等待维护者更新,使用不同的 buildpack 或自己修复 buildpack 并使用它。如果你一步一步地遵循这个步骤,它类似于部署一个全新的应用程序。
关于perl - 更新 Heroku 上的堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67839115/