I love using supervisor for many of my programs.  Recently I've also been
using supervisor to launch docker containers (i.e. command=docker
run....).  This has generally worked very well except for one particular
issue; I like to use the docker --name option to ensure my containers have
the same name as the supervisor jobs.  The downside of this is that there
are a variety of corner cases where docker will not auto-delete the
container even if --rm=true is used.  When supervisor goes to start the job
it fails because the name is already taken.

Some workarounds would be:

   - Don't use --name and simply let the containers get unique UUIDs.
   - Build some form of wrapper script for the docker command
   - Change the behavior of docker ;-)

Ultimately I decided that it would be nice if supervisor was
"docker-aware".  I wanted to make it as an rpcinterface plugin but wasn't
happy with the result because I wanted to include the necessary docker
information within the [program] section and there did not appear to be a
straightforward way to extend the option parser from a plugin.

The alternative was to extend supervisor itself in a manner similar to how
fastcgi support is included in supervisor.  I've made the necessary changes
and submitted a pull request, but I see that the Travis CI build was
failing because I used some deprecated Python syntax.  I'll go back and fix
up the code so that it passes all the Travis CI tests...but I wanted to see
if this was thought to be a useful enhancement.  If not, are there
alternate approaches that would be better?

~Michael
_______________________________________________
Supervisor-users mailing list
Supervisor-users@lists.supervisord.org
https://lists.supervisord.org/mailman/listinfo/supervisor-users

Reply via email to