It is a foreman implementation in GO.
Foreman is a manager for Procfile-based applications. Its aim is to abstract away the details of the Procfile format, and allow you to run your services directly.
- Run procfile-backed apps.
- Able to run with dependency resolution.
Procfile is simply key: value format like:
app1:
cmd: ping -c 1 google.com
run_once: false
checks:
cmd: ps aux | grep google
deps:
- redis
app2:
cmd: ping -c 5 yahoo.com
checks:
cmd: ps aux | grep yahoo
redis:
cmd: redis-server --port 6010
checks:
cmd: redis-cli -p 6010 ping
tcp_ports: [6010]Here we defined three services app1, app2 and redis with check commands and dependency matrix
- Get the pkg:
go get https://github.com/Eslam-Nawara/foreman- pkg API:
| Function | Description |
|---|---|
func New(procfilePath string, isVerbose bool) (*Foreman, error) |
Builds a new instance of foreman from a given procfile. |
func (f *Foreman) Start() error |
Starts the foreman services parsed from the procfile. |
func (f *Foreman) Exit(exitStatus int) |
Terminates all the foreman services. |
- Install the pkg
go install https://github.com/Eslam-Nawara/foreman
- Run foreman in your current directory with your custom procfile
foreman -f <procfile path>
- Add -v flag to run the program verbosely.