Alternative to supervisord for docker

Supervisord is really great tool even for docker environment. It helps a lot with stderr redirection and signals forwarding. But it has a couple of disadvantages:

  1. It doesn’t support delayed startup. It could be useful to delay some agent startup until main app is initializing. Priority doesn’t solve this issue.
  2. If some app enters FATAL state supervisord just logs it but continue to work. So you can’t see it until look at logs of container. It could much more friendly if supervisord just stops because in that case you see the problem with docker ps -a

So what is the best alternative to supervisord?

  • Elasticsearch 2.4 nodes does not form cluster with ConnectTransportException
  • can't access apache on docker from my localhost
  • Requests to docker containers failing on chrome for OSX
  • Docker-compose restart only updated images
  • ListenAndServe returns net.DNSError “nodename nor servname provided”
  • Updating PATH environment variable permanently in Docker container
  • How to run 2 commands with docker exec
  • What does the DOCKER_TLS_VERIFY and DOCKER_CERT_PATH variable do?
  • Docker image's ID and sha256 are this field related and how generated
  • AWS ECS running a task that requires many cores
  • Deploying Meteor application with Docker and phusion-passenger
  • nginx+php-fpm docker-compose not work
  • One Solution collect form web for “Alternative to supervisord for docker”

    In response to the “PID1 zombie reaping” issue, I recommended before (in “Use of Supervisor in docker”) to use runit instead of supervisord

    Runit uses less memory than Supervisord because Runit is written in C and Supervisord in Python.
    And in some use cases, process restarts in the container are preferable over whole-container restarts.

    See the phusion/baseimage-docker image for more.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.