在 Heroku 上更新堆栈
Updating the stack on Heroku
我有一个小应用程序 运行 正在那里使用 heroku-buildpack-perl buildpack. It's just a small 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
注:
您必须确保您使用的构建包与 heroku-20
兼容。如果不是,它将不起作用。您将不得不等待维护者更新,使用不同的构建包或自己修复构建包并使用它。
如果您按此步骤操作,它类似于部署一个全新的应用程序。
我有一个小应用程序 运行 正在那里使用 heroku-buildpack-perl buildpack. It's just a small 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
注:
您必须确保您使用的构建包与 heroku-20
兼容。如果不是,它将不起作用。您将不得不等待维护者更新,使用不同的构建包或自己修复构建包并使用它。
如果您按此步骤操作,它类似于部署一个全新的应用程序。