从github

时间:2017-03-29 21:16:30

标签: node.js heroku procfile

我有一个网络应用程序,我从github设置了持续部署。但是,我计划在这个应用程序中添加一些工作者角色,我想知道几件事情。我使用Node.js。

在我看来,我有这样的设计:

  • Procfile将拥有#and web和worker dynos。
  • 工作者类型可以是不同的部署,但我能看到的是它有一个不同的启动命令。这如何与包管理一起使用?如果我在worker角色中需要的东西与Web应用程序中的东西不同,该怎么办?

所以我的问题是?

  • 我是否有机会使用相同的存储库并以工作者和Web代码维护在同一位置的方式构建它?我可以在根目录中拥有/web/worker个文件夹,这些文件夹具有不同的app.jspackage.json文件,因此我将它们放在同一个仓库中,但它们的依赖关系管理方式不同。在部署到Heroku时如何才能完成这项工作?
  • 我有一些第三方库,我已经通过构建包安装到Web应用程序,但我希望它们出现在worker角色中。这些对于我想要进行的一些计算是必要的,因此我计划使用worker角色进行出列和处理。有什么方法可以在worker角色上安装构建包吗?
  • 通过Procfile管理这个的正确方法是什么?我可以在proc文件中设置我想要的辅助角色数量,还是需要使用命令行放大/缩小,这是我唯一的选择?

1 个答案:

答案 0 :(得分:1)

看起来这完全有可能。您需要做的就是拥有一个全局package.json文件来管理您的依赖项(您无法使用worker和Web角色管理单独的依赖项)。如果package.json不足以让heroku检测到您正在使用Node.Js这是我遇到的问题;添加heroku/nodejs的buildpack,你应该没问题。无论安装什么buildpack,它都可以在worker角色上使用。

关于不同的目录,这就是我现在所拥有的:

/web
/worker
/package.json
/Procfile

我的procfile是:

web: npm start --prefix /web
worker: npm start --prefix /worker

似乎解决了启动问题。在Procfile中没有任何设置#of dynos的方法。