【问题标题】:How to run Procfile with multiple commands on Heroku?如何在 Heroku 上使用多个命令运行 Procfile?
【发布时间】:2017-11-27 18:35:36
【问题描述】:

我正在尝试将静态网站部署到 Heroku,但我很难正确设置 Procfile

我有下一个命令要在服务器上运行:

  • npm install
  • gulp build(将使用 /public 文件夹进行构建)
  • http-server(默认为/public

我尝试过的:

  • web: npm install; gulp build; http-server
  • web: npm install & gulp build & http-server

【问题讨论】:

  • Procfile 不是您应该触发构建步骤的正确位置,而是使用一些自定义的 buildback。如果站点构建生成在其他地方完成,那么在 Heroku 示例中使用一些 CI 工具(CircleCI 等)会更好。目前,每次重启后,Procfile 命令都会运行并启动安装过程。
  • @RistoNovik 感谢您的评论,我刚刚解决了它并发布了一个答案:) 我尽量保持简单。

标签: node.js heroku procfile


【解决方案1】:

您可以使用sh -c 命令在Procfile 中运行多个命令:

worker: sh -c 'firstCommand && secondCommand && etc...'

注意事项:Procfile 应位于项目根目录

例如:

worker: sh -c 'cd backend && yarn install && yarn build && yarn start-worker'

或者在您的情况下(如果您的 Procfile 与 package.json 处于同一级别):

web: sh -c 'npm install && gulp build && npm run http-server'

【讨论】:

  • 一个好的答案将始终包括解释为什么这会解决问题,以便 OP 和任何未来的读者可以从中学习。
  • 添加了附加信息 =)
【解决方案2】:

您可能还一直在寻找 && 或类似的库。

无论如何,根据文档,使用 Procfile 只不过是您的 npm 启动脚本的入口点。


按照(npm-scripts) 所述使用 npm 脚本生命周期。

直接来自文档(heroku-build-process)

"scripts": {
    "start": "node index.js",
    "test": "mocha",
    "postinstall": "bower install && grunt build"
}

Heroku 采用了“万事皆有应用”的口号,但适用于 buildpack。无论您要构建什么,都有一个构建包。

【讨论】:

  • 您应该在答案中包含必要的代码和详细信息,而不仅仅是链接
【解决方案3】:

好的,所以我花了一些时间来解决这个问题。默认情况下,heroku 正在安装 package.json 文件中的所有包,因此不再需要 npm install。然后剩下什么 - gulp buildhttp-server

对于这种情况,我已将"postinstall" : "gulp build" 添加到我的package.json 中,它给我留下了web: http-server

简化事情实际上已经解决了问题。不确定这些信息对您有多大用处,但值得分享。

【讨论】:

  • 如果你已经在本地或其他地方使用了 postbuild,你也可以使用 heroku-postbuild,例如"heroku-postbuild": "vue-cli-service build"
猜你喜欢
  • 1970-01-01
  • 2020-07-02
  • 2016-03-02
  • 2019-10-04
  • 2015-09-08
  • 2020-05-16
  • 2012-03-13
  • 2016-02-07
  • 2015-05-11
相关资源
最近更新 更多