I want to run more than a single command in a dyno.
The quickest way is to list the commands to run, each followed by an
&, with a
wait -n in the end, in the
web: trap '' SIGTERM; puma -C config/puma.rb & sidekiq & wait -n; kill -SIGTERM -$$; wait
This runs all the command in the background.
wait -n exits when at least one of the commands exits and triggers the dyno to restart.
kill are to make sure every processes exits cleanly when being terminated by the platform. Please watch the app metrics so that the commands don't exhaust memory and CPU.
This method is not recommended for production applications. We recommend separate process types to allow process isolation, scaling, and monitoring.