Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Proposed change
This PR transitions to Docker image away from supervisord to use s6, as provided by s6-overlay.
What
s6 is a process supervision suite of tools, and s6-overlay is a nice implementation wrapping them up into useful settings for Docker use. It's the same set of tools used by the LinuxServer.io team for their base images.
The previous 2 bash scripts have been broken apart into distinct oneshot services handling a single thing, with dependencies as required. For the most part, start up ordering is identical, with some gains for doing a few init actions in parallel. I've included a flowchart in the folder of how the startup dependencies are setup.
Why
In the second paragraph of the
supervisord
documentation, it is noted to not be a proper replacement for PID 1. s6 is a proper PID 1 process supervision suite with some nice utilities for process control as well. It's good to have a proper PID 1 for signal handling, clean shutdowns and reaping zombies properly.All the s6 services, oneshot or longrun can have dependencies defined between them, ensuring and enforcing a valid ordering of startup. This includes more correct handling of optional services like
flower
, which previously was kind of hacky and just allowed to exit, even if it should have started.I'm sure this will break someone's workflow, but hopefully not too badly.
Type of change
Checklist:
pre-commit
hooks, see documentation.