我有一个Web应用程序,我从github设置了持续部署。但是,我计划向此应用程序添加一些辅助角色,我想知道几件事。我正在使用 Node.js。
在我的脑海中,我的设计是这样的:
- Procfile 将具有 Web 和 worker dynos 的 #。
- worker类型可以是不同的部署,但我只能看到它有不同的启动命令。这如何与包管理配合使用?如果我在辅助角色中需要的内容与 Web 应用中的内容不同,该怎么办?
所以我的问题是?
- 我是否有机会使用相同的存储库并以在同一位置维护工作线程和 Web 代码的方式构建它?我可以在根目录中拥有具有不同
app.js
和package.json
文件的/web
和/worker
文件夹,以便将它们放在同一个存储库中,但它们的依赖项管理方式不同。在部署到 Heroku 时,如何完成此操作?
我 - 有一些第三方库,我已通过构建包将其安装到 Web 应用程序,但我希望它们存在于辅助角色中。这些对于我想执行的某些计算是必需的,因此我计划使用辅助角色进行取消排队和处理。有什么方法可以在辅助角色上安装构建包?
- 通过Procfile管理它的正确方法是什么?我可以在 proc 文件中设置所需的辅助角色数,还是需要使用命令行进行纵向扩展/缩减,这是我唯一的选择?
看起来这是完全可能的。您需要做的就是拥有一个全局package.json
文件来管理依赖项(不能使用辅助角色和 Web 角色管理单独的依赖项)。如果package.json
不足以让 heroku 检测到您正在使用Node.Js
这是我面临的问题;添加heroku/nodejs
的构建包,您应该没问题。无论安装了什么构建包,它都将在辅助角色上可用。
关于不同的目录,这就是我现在拥有的:
/web
/worker
/package.json
/Procfile
我的程序文件是:
web: npm start --prefix /web
worker: npm start --prefix /worker
这似乎解决了启动问题。没有任何方法可以在Procfile中设置 #of dynos。