Commandes Linux : docker-compose up

DOCKER-COMPOSE UP

Commande : docker-compose up
Builds, (re)creates, starts, and attaches to containers for a service.

Unless they are already running, this command also starts any linked services.

The `docker-compose up` command aggregates the output of each container. When
the command exits, all containers are stopped. Running `docker-compose up -d`
starts the containers in the background and leaves them running.

If there are existing containers for a service, and the service's configuration
or image was changed after the container's creation, `docker-compose up` picks
up the changes by stopping and recreating the containers (preserving mounted
volumes). To prevent Compose from picking up changes, use the `--no-recreate`
flag.

If you want to force Compose to stop and recreate all containers, use the
`--force-recreate` flag.

Usage: up [options] [--scale SERVICE=NUM...] [SERVICE...]

Options:
    -d, --detach               Detached mode: Run containers in the background,
                               print new container names. Incompatible with
                               --abort-on-container-exit.
    --no-color                 Produce monochrome output.
    --quiet-pull               Pull without printing progress information
    --no-deps                  Don't start linked services.
    --force-recreate           Recreate containers even if their configuration
                               and image haven't changed.
    --always-recreate-deps     Recreate dependent containers.
                               Incompatible with --no-recreate.
    --no-recreate              If containers already exist, don't recreate
                               them. Incompatible with --force-recreate and -V.
    --no-build                 Don't build an image, even if it's missing.
    --no-start                 Don't start the services after creating them.
    --build                    Build images before starting containers.
    --abort-on-container-exit  Stops all containers if any container was
                               stopped. Incompatible with -d.
    -t, --timeout TIMEOUT      Use this timeout in seconds for container
                               shutdown when attached or when containers are
                               already running. (default: 10)
    -V, --renew-anon-volumes   Recreate anonymous volumes instead of retrieving
                               data from the previous containers.
    --remove-orphans           Remove containers for services not defined
                               in the Compose file.
    --exit-code-from SERVICE   Return the exit code of the selected service
                               container. Implies --abort-on-container-exit.
    --scale SERVICE=NUM        Scale SERVICE to NUM instances. Overrides the
                               `scale` setting in the Compose file if present.

 

Démarrer une application ou des services en particulier :

Si aucun service n’est spécifié, ils seront tous démarrés dans l’ordre défini par les dépendances.
Si un service est spécifié, seul lui sera démarré, sauf s’il possède un ou plusieurs dépendances, auxquels cas ces dernières seront démarrées au préalable.
Sans l’option -d, ils seront démarrés au premier-plan.
Avec l’option -d, ils seront démarrés en arrière-plan (mode detach).
Avec l’option --no-deps, les dépendances ne sont pas démarrées au préalable.

docker-compose up [options] [SERVICE...]

ex :

$ docker-compose up -d
Creating network "example-voting-app_front-tier" with the default driver
Creating network "example-voting-app_back-tier" with the default driver
Creating example-voting-app_vote_1   ... done
Creating db                          ... done
Creating example-voting-app_result_1 ... done
Creating redis                       ... done
Creating example-voting-app_worker_1 ... done
$ docker-compose up -d worker
Creating network "example-voting-app_front-tier" with the default driver
Creating network "example-voting-app_back-tier" with the default driver
Creating redis ... done
Creating example-voting-app_worker_1 ... done
$ docker-compose up -d --no-deps worker
Creating network "example-voting-app_front-tier" with the default driver
Creating network "example-voting-app_back-tier" with the default driver
Creating example-voting-app_worker_1 ... done

 

Démarrer une application tout en reconstruisant les images (directive build) :

docker-compose up [options] --build [SERVICE...]

ex :

$ docker-compose up -d --build

 

Définir le fichier Docker Compose à utiliser :

Par défaut, Docker Compose utilise le fichier docker-compose.yml situé dans le répertoire courant.
On peut toutefois spécifier un fichier alternatif avec l’option -f (--file).

docker-compose -f filename [options] [SERVICE...]

ex :

$ docker-compose -f docker-compose-simple.yml up -d

 

Définir le working directory à utiliser :

Par défaut, Docker Compose utilise le répertoire courant comme répertoire de travail.
On peut toutefois spécifier un répertoire de travail alternatif avec l’option --project-directory.

docker-compose --project-directory directory [options] [SERVICE...]

ex :

$ docker-compose --project-directory compose-sample-1/ --file compose-sample-1/docker-compose.yml up -d

 

Scaler un service :

Si le service utilise l’instruction container_name pour nommer le container correspondant, il ne pourra pas être scalé : plusieurs containers ne peuvent pas avoir le même nom
Si le service expose un port particulier, il ne pourra pas être scalé : plusieurs containers ne peuvent pas utiliser le même port de la machine hôte.

docker-compose up [options] --scale service=N [SERVICE...]

ex :

$ docker-compose up -d --scale simulator=3
iot_collector_1 is up-to-date
iot_dashboard_1 is up-to-date
influx is up-to-date
Starting iot_simulator_1 ... done
Creating iot_simulator_2 ... done
Creating iot_simulator_3 ... done
$ docker-compose up -d --scale redis=2
...
ERROR: for redis  Cannot create container for service redis: Conflict. The container name "/redis" is already in use by container "ff7ffbbebc3f4441a6b93c9a06389367b552b010bd62377931372ec2da0d4d59". You have to remove (or rename) that container to be able to reuse that name.
$ docker-compose up -d --scale vote=3
...
ERROR: for examplevotingapp_vote_3  Cannot start service vote: driver failed programming external connectivity on endpoint examplevotingapp_vote_3 (b520da97c5736c46bfb2c80947fd2643387df0e0f67bbe18c226bad006dc940e): Bind for 0.0.0.0:5000 failed: port is already allocated

 

Recréer les containers même si leur configuration ou leur image n’a pas changé :

docker-compose up [options] --force-recreate [SERVICE...]

ex :

$ docker-compose up -d --force-recreate
Recreating example-voting-app_vote_1   ... done
Recreating db                          ... done
Recreating example-voting-app_result_1 ... done
Recreating redis                       ... done
Recreating example-voting-app_worker_1 ... done

 

Ne pas démarrer les containers après avoir créé les services de l’application :

L’option -d ne peut pas être utilisée avec l’option --no-start.

docker-compose up [options] --no-start [SERVICE...]

ex :

$ docker-compose up --no-start
Creating network "example-voting-app_front-tier" with the default driver
Creating network "example-voting-app_back-tier" with the default driver
Creating example-voting-app_vote_1   ... done
Creating redis                       ... done
Creating db                          ... done
Creating example-voting-app_result_1 ... done
Creating example-voting-app_worker_1 ... done
$ docker-compose ps
           Name                          Command               State    Ports
-----------------------------------------------------------------------------
db                            docker-entrypoint.sh postgres    Exit 0        
example-voting-app_result_1   nodemon server.js                Exit 0        
example-voting-app_vote_1     python app.py                    Exit 0        
example-voting-app_worker_1   /bin/sh -c dotnet src/Work ...   Exit 0        
redis                         docker-entrypoint.sh redis ...   Exit 0

 

Construire les images avant de démarrer les containers :

docker-compose up [options] --build [SERVICE...]

ex :

$ docker-compose up -d --build

 

Ne pas construire les images avant de démarrer les containers même si elles sont manquantes :

docker-compose up [options] --no-build [SERVICE...]

ex :

$ docker-compose up -d --no-build

 

Fermer le menu