Processes are containers that run commands that you specify. Your app would required different processes to run like a web server, background worker etc. These processes required by your app needs to be defined in a file named Procfile
at the root of your project. Here is an example Procfile
from a Ruby on Rails app:
web: bundle exec puma -C config/puma.rb
worker: bundle exec sidekiq -C config/sidekiq.yml
release: bundle exec rake db:migrate
This app has 2 running processes. The web
process runs the web server, the worker
runs the background task manager (in this case Sidekiq). The release
process is special, it is only run during the release phase once after every deployment. It is not an actively running process.
After the build phase, the release command is executed as mentioned in the Procfile
.
The other processes in the Procfile
are spawned in their own containers.
Depending on the scale and performance requirement, you can increase the number of containers.