skip to Main Content

I hope I didn’t miss anything simple from the manual.
The structure is:

/home/user
   /foo1/bar1/docker/
                   Dockerfile
                   docker-compose.yml
   /foo2/bar2/docker/
                   Dockerfile
                   docker-compose.yml

docker-compose.yml

version: '3.9'
services:
  foo1-bar1:
    build:
      context: .
      args:
        DOCKER_SERVER_ROOT_DIR: ${DOCKER_SERVER_ROOT_DIR}
      dockerfile: Dockerfile
    image: foo1-bar1:v1
    container_name: foo1-bar1-v1

The same is for foo-bar-v2.
Both of them I successfully run as:

cd /foo1/bar1/docker/
docker-compose up -d
[+] Running 1/1
⠿ Container foo1-bar1-v1  Started 

cd /foo2/bar2/docker/
docker-compose up -d
[+] Running 1/1
⠿ Container foo2-bar2-v1  Started

The question is, why does it stop both of them when I try to stop only 1? Service names, container names, image names are different…

user@vm:~/foo1/bar1/docker$ docker-compose stop
[+] Running 2/2
 ⠿ Container foo1-bar1-v1    Stopped                                                                                                                                                                                         
 ⠿ Container foo2-bar2-v2    Stopped

2

Answers


  1. You have to specify the service to stop. Otherwise it will stop all services.

    docker compose stop [OPTIONS] [SERVICE...]

    here : docker-compose stop foo1-bar1

    Login or Signup to reply.
  2. docker-compose has the concept of projects. Run docker-compose --help and you will see:

          --project-directory string   Specify an alternate working directory
                                       (default: the path of the, first specified, Compose file)
      -p, --project-name string        Project name
    

    So in your case, both your services belong to the same project named docker.

    You can actually run docker-compose -p docker ps and you will see both your services.

    You can also override this by specifying your own project name independent of the directory name.

    My version of docker-compose (Docker Compose version v2.10.2 MacOS) does warn me that there are orphan containers in this project when I replicate your setup. Also it doesn’t automatically stop "orphan" services and gives a warning that the network could not be removed either.

    This is also another interesting fact: both services run on the same network (docker_default) only because the project name (folder name) is the same.

    I hope this explains it.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search