Foreman

Procfile

alpha ./bin/alpha
bravo ./bin/bravo some args
charlie ./bin/charlie -n 5

Development mode

Running

Log files will be output to standard out, colorized to aid in visual separation.

$ foreman start
[01:27:08] [alpha] started with pid 4393
[01:27:08] [bravo] started with pid 4394
[01:27:08] [charlie] started with pid 4395
[01:27:08] [bravo] initializing...
[01:27:08] [bravo] complete

Using Screen

Launch the processes in a screen session in indivudal windows

$ foreman screen

Single Process Execution

$ foreman execute alpha

Exporting to Upstart

Export to upstart scripts

$ foreman export sampleapp

$ initctl list | grep sampleapp
sampleapp start/running
sampleapp-alpha (1) start/running, process 4204
sampleapp-bravo (1) start/running, process 4589
sampleapp-charlie (1) start/running, process 4597

Change process concurrency levels

$ foreman scale sampleapp alpha 4
sampleapp-alpha (2) start/running, process 4164
sampleapp-alpha (3) start/running, process 4166
sampleapp-alpha (4) start/running, process 4168

$ initctl list | grep sampleapp
sampleapp start/running
sampleapp-alpha (4) start/running, process 4168
sampleapp-alpha (3) start/running, process 4166
sampleapp-alpha (2) start/running, process 4164
sampleapp-alpha (1) start/running, process 4204
sampleapp-bravo (1) start/running, process 4589
sampleapp-charlie (1) start/running, process 4597

$ foreman scale sampleapp alpha 1
sampleapp-alpha stop/waiting
sampleapp-alpha stop/waiting
sampleapp-alpha stop/waiting

Good Upstart citizen

All Upstart commands work as expected

$ start sampleapp
$ stop sampleapp
$ restart sampleapp

Standardized Logging

/var/log/sampleapp/alpha.log
/var/log/sampleapp/bravo.log
/var/log/sampleapp/charlie.log

License

MIT

© 2010 David Dollar