I’ve read in the docs that I shouldn’t background a start process, as this will cause the supervisor process to start a second copy, but is it possible to run multiple processes from the start command? What is the right way to do this?
You cannot start multiple processes from the
If the process you start itself forks, that is fine provided that the parent process remains active and will terminate all children when it receives a
sigterm message. Failure to do so will leave zombie processes lying around that may cause unexpected and unpredictable behavior. In that case, an off-the-shelf supervisor service is best as it is designed to do exactly that. This process is not recommended.
In the vast majority of cases a background process of that sort is better handled using a
worker container instead. See the documentation on how to configure one.
Using a worker is the recommended way of starting more than one process. But if you are not able to use a worker and have no other way, it is technically possible to use
supervisord to start multiple processes. Please only use this as a last resort.
Example of running supervisord to run both
dependencies: python: supervisor: '*' web: commands: start: "supervisord -n -c supervisor.conf"
supervisor.conf gets committed to the repository and looks like this:
[supervisord] logfile=/tmp/supervisord.log nodaemon=true minfds=1024 pidfile=/tmp/supervisord.pid [program:php7.2] command=/usr/sbin/php-fpm7.2-zts process_name=%(program_name)s autostart=true autorestart=true [program:dropbox] process_name=%(program_name)s command=/app/.dropbox-dist/dropboxd autostart=true autorestart=true