Closed MarcHagen closed 1 month ago
Hi @MarcHagen
Thank you for reaching out and for your kind words about the repository and its README!
Regarding your question about why I chose to use runit
as the init process instead of s6
or monit
, here's an explanation of the differences and the rationale behind this choice.
Differences between runit, s6, and monit:
runit:
runit
is known for being lightweight and fast with a very low memory footprint.runit
provides reliable process supervision and ensures that services are restarted if they crash.s6:
s6
is highly modular, allowing you to pick and choose the components you need.s6
can be more complex to configure and manage due to its modular nature.monit:
monit
is primarily designed for monitoring and managing processes, files, directories, and devices on a Unix system.monit
includes a web interface for easy management and monitoring, which might be overkill for simple container use cases.Reason for Choosing runit:
I opted for runit
due to its simplicity and efficiency. In the context of a Docker container where we want to keep things lightweight and ensure reliable service supervision, runit
offers an excellent balance of features and ease of use. Additionally, its low memory footprint is particularly advantageous in containerized environments.
The original TrafeX version of the repository uses supervisor
, which is written in Python. While supervisor
is robust and widely used, I wanted to maintain a fork that uses runit
to provide an alternative that might better suit certain use cases where a lightweight and simple init system is preferable.
For more context, you can refer to this PR I did on the original repo, which discusses the transition from supervisor
to runit
and the benefits associated with this change.
If you have any suggestions or would like to improve the README, feel free to send a PR. I would be happy to merge it. Thanks!
Best regards,
Ernesto
Hi 👋🏻
I came across your repo in search of a multi-process PHP container. And yours looks like what I need. Just curious why you chose to use
runit
as the init process instead ofs6
ormonit
for example? (personally never done stuff withrunit
before)Maybe if the reason is interesting enough, you could add that to your very complete readme (I love it!)