Reuse containers with `docker-compose`

I’ve an app running on multiple Docker containers defined by docker-compose. Everything works fine from my user and the docker-compose ps output looks like:

       Name                Command           State     Ports
------------------------------------------------------------
myuser_app_1    /config/bootstrap.sh   Exit 137
myuser_data_1   sh                     Exit 0
myuser_db_1     /run.sh                Exit 143

Now I’m trying to run docker-compose up with supervisord (see relevant part of supervisord.conf below) and the issue is that the containers are now named myapp_app_1, myapp_data_1 and myapp_db_1, that is they’re created from scratch and all customizations on the former containers is lost.

  • ADD and COPY to merge the contents of a dir with the one already on the build
  • What's the difference between the docker commands: run, build, and create
  • Docker: bash terminal starts without prompt
  • How can I run docker python tests without pre-loading all local machines?
  • How to get a fulfilled MySQL database in Travis
  • How can I disable TLS when running from Docker?
  • I tried renaming the containers, but it gives an error saying that there’s already a container with that name.

    Q: Is there some way to force docker-compose reuse existing containers instead of creating new ones based in their respective images?

    supervisord.conf

    ...
    [program:myapp]
    command=/usr/local/bin/docker-compose
        -f /usr/local/app/docker-compose.yml up
    redirect_stderr=true
    stdout_logfile=/var/log/myapp_container.log
    stopasgroup=true
    user=myuser
    

  • creating a default database in mysql using dockerfile
  • Error “Failed to OpenForBackup failed in Win32” when pulling microsoft/nanoserver container
  • My docker container was created with no name and no tag
  • Communication between linked docker containers
  • Accessing Bluetooth dongle from inside Docker?
  • dotnet core SDK/Runtime on debian in dockers
  • One Solution collect form web for “Reuse containers with `docker-compose`”

    Compose will always reuse containers as long as their config hasn’t changed.

    If you have any state in a container, you need to put that state into a volume. Containers should be ephemeral, you should be able to destroy them and recreate them at any time without losing anything.

    If you need to initialize something I would do it in the Dockerfile, so that it’s preserved in the image.

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