Search code examples
node.jsherokumultiple-instancesworker

multiple worker/web processes on a single heroku app


Is there some way to configure multiple worker and/or web processes to run in the single Heroku app container? Or does this have to be broken up into multiple Heroku apps?

For example:

worker: node capture.js
worker: node process.js
worker: node purge.js
web: node api.js
web: node web.js

Solution

  • All processes must have unique names. Additionally, the names web and worker are insignificant and carry no special meaning. The only process that carries a significant name is the web process, as stated in the Heroku docs:

    The web process type is special as it’s the only process type that will receive HTTP traffic from Heroku’s routers. Other process types can be named arbitrarily. -- (https://devcenter.heroku.com/articles/procfile)

    So you want a Procfile like so:

    capture: node capture.js
    process: node process.js
    purge: node purge.js
    api: node api.js
    web: node web.js
    

    You can then scale each process separately:

    $ heroku ps:scale purge=4