如何在Heroku上部署时配置/设置命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Heroku上部署时配置/设置命令相关的知识,希望对你有一定的参考价值。

我正在将我的Laravel应用程序部署到Heroku。我为我的应用程序设置了一个连接到GitHub的管道。我将其配置为每当在develop分支上找到新提交时再次自动部署。问题是我需要配置为在每个部署上运行一些其他命令,例如迁移我的数据库。

我找不到在Heroku UI中设置这些命令的选项。我怎样才能做到这一点?

enter image description here

我找到了Heroku的发布阶段,但我想通过Heroku仪表板进行配置。在发布阶段,我必须将命令放在Procfile中。很难根据环境运行和管理命令。

例如,在我的测试环境中,我可能想运行php artisan migrate --seed,但是在我的生产环境中,我可能会在不播种数据库的情况下运行迁移。

答案

您可能更喜欢通过Web仪表板执行此操作,但我认为这不是一个选项。 Procfile release phase方法效果很好。

添加release进程到你的Procfile,例如

web: vendor/bin/heroku-php-apache2 public/
release: php artisan migrate

发布阶段使您可以在部署应用程序的新release之前运行某些任务。发布阶段对于以下任务非常有用:

  • 将CSS,JS和其他资产从应用程序的slug发送到CDN或S3存储桶
  • 启动或使缓存存储无效
  • 运行数据库模式迁移

如果发布阶段任务失败,则不会部署新版本,从而使您当前的版本不受影响。

编辑:发布命令不适合持续集成。更好的解决方案是使用适当的CI工具。 Heroku does provide one,但如果您愿意,可以使用第三方CI工具。

要使用Heroku的CI工具,您需要在管道设置中启用Heroku CI,并在存储库根目录中添加或更新名为app.json的文件。在app.json文件中你可以使用configure the testing environment,这可能比简单地为你的数据库播种要复杂得多。例如,您可以包含Heroku插件以提供Redis节点或设置自定义环境变量。

For PHP您的require-dev依赖项将自动安装在您的测试环境中。您可以在test-setup script中为数据库设定种子,并在test script中定义测试命令。

以上是关于如何在Heroku上部署时配置/设置命令的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 Heroku 配置文件,使其在 Heroku 部署的任何终端问题中接受“是”

如何在部署在 heroku 上的解析服务器上使用云代码?

部署到 Heroku 时 collectstatic 命令不运行,但设置非常好

在heroku上部署django网站时出错

Symfony 4:在Heroku上设置可信代理

Heroku Django 在生产过程中如何获取设置文件?多种设置