Si vous exécutez la yml avec docker-composer, vous pouvez simplement exécuter docker-compose up -d
et il va recréer tous les contenants qui ont des changements et de laisser tous les services, sans changement intacte.
$ cat docker-compose.env2.yml
version: '2'
services:
test:
image: busybox
# command: env
command: tail -f /dev/null
environment:
- MY_VAR=hello
- MY_VAR2=world
test2:
image: busybox
command: tail -f /dev/null
environment:
- MY_VAR=same ole same ole
$ docker-compose -f docker-compose.env2.yml up -d
Creating network "test_default" with the default driver
Creating test_test_1
Creating test_test2_1
$ vi docker-compose.env2.yml # edit the file to change MY_VAR
$ docker-compose -f docker-compose.env2.yml up -d
Recreating test_test_1
test_test2_1 is up-to-date
Si vous exécutez les conteneurs comme un docker stack deploy -c docker-compose.yml
avec une version 3 de format de fichier, vous pouvez faire un roulement de mise à jour du service qui permettra d'éviter tout temps d'arrêt si vous avez plusieurs instances de votre service en cours d'exécution. Cette fonctionnalité est encore très nouveau, vous aurez envie 1.13.1 pour résoudre certains des problèmes avec les mises à jour, et comme avec n'importe quoi cette nouvelle, les bugs sont toujours en cours d'élaboration.