RUnit does not stop docker-compose's containers

I would like to have a RUnit service to supervise a set of containers launched by docker-compose tool, here’s my the runit script:

In /etc/sv/app/run

  • Is it possible to create a docker image from Ubuntu ISO on Windows offline?
  • Binary characters returned when reading from socket.getInpitStream()
  • Docker error to access private registry (Win)
  • Mounting file system in docker fails sometimes
  • Adding Flyway to a MySQL Docker Container
  • Docker Django could not connect to server: Connection refused
  • #!/bin/bash
    exec 2>&1
    
    APP_HOME=/home/myapp
    
    source $APP_HOME/env.sh
    exec docker-compose -f $APP_HOME/docker-compose.yml up
    

    Here’s what I have then:

    • sv start app – launches the docker-compose thing just fine
    • sv stop app – stops docker-compose process itself but for unknown reason it leaves the containers running

    Is there any chance to have the stop command to stop containers as well? I thought that is what docker-compose should do when it gets stopped by RUnit.

  • Docker and Kubernetes repository for linux
  • Connecting to Redis running in Docker Container from Host machine
  • How to deploy an Dockerized Java/Widlfly Swarm Fat Jar Microservice + Database
  • Chaos Monkey equivalent for Docker?
  • npm install with a docker-compose project
  • Getting a “can't stat” error on build when trying to build a docker container within a Jenkins pipeline, but why?
  • One Solution collect form web for “RUnit does not stop docker-compose's containers”

    I’m not familiar with docker (yet) but I have familiarity with runit.

    When you issue sv stop app you are actually telling runsvdir to signal the runsv for your docker launch to tear down the process. If you need something to signal the container to shut down, it won’t happen because runsv will haul off and kill any child processes that are attached. You may wish to read up on ./finish scripts, which are tasked with cleaning up things.

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