67ffbe2aa29cdb04335e5f7d30fe874c1ddf26e0
With the previous way systemd services were exported, you had to enable every single process one by one to get the service operational.
Consider the following Procfile:
web: bundle exec thin start
worker: bundle exec worker start
Exported with:
foreman export systemd /usr/lib/systemd/system -a myapp -c worker=3
You will have to perform the following to start the service:
systemctl enable myapp-web-1.service
systemctl enable myapp-worker-1.service
systemctl enable myapp-worker-2.service
systemctl enable myapp-worker-3.service
systemctl enable myapp-web.target
systemctl enable myapp-worker.target
systemctl start myapp.target
Thats 7 commands, and you have to know the names of each service. Nasty.
With the changes here, you will have to perform the following:
systemctl enable myapp.target
systemctl start myapp.target
You can also `systemctl start myapp.target` without enabling as well. Previously if you tried to start `myapp.target` without enabling each individual process it would not work.
---
Additionally, this change also adds the dependency to 'multi-user.target' (the default behavior for all services). This will properly shut down (or start) the app when the system changes runlevels. The previous method did not do this.
Foreman
Manage Procfile-based applications
| If you have... | Install with... |
|---|---|
| Ruby (MRI, JRuby, Windows) | $ gem install foreman |
| Mac OS X | foreman.pkg |
Getting Started
Documentation
Ports
Authors
Created and maintained by
David Dollar
Patches contributed by
License
Foreman is licensed under the MIT license.
See LICENSE for the full license text.
Languages
Ruby
91.9%
HTML
5.9%
Shell
1.9%
Procfile
0.3%