docker-compose.yml
version: '2'
services:
app:
build:
context: .
command: python src/app.py
restart: on-failure
depends_on:
- db
environment:
- TJBOT_DB_Host=db
- TJBOT_API_KEY
- TJBOT_AUTO_QUESTION_TIME
env_file:
- .env
db:
image: mongo:3.0.14
volumes:
- mongodbdata:/data/db
volumes:
mongodbdata:
Si je change le .env
fichier, comment pourrais-je recharger le conteneur pour utiliser les nouvelles variables d'environnement avec un temps d'indisponibilité minimal?
Si vous utilisez le yml avec docker-compose, vous pouvez simplement lancer docker-compose up -d
et il recréera tous les conteneurs comportant des modifications et laissera tous les services inchangés.
$ 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 en tant que docker stack deploy -c docker-compose.yml
avec un format de fichier de version 3, vous pouvez effectuer une mise à jour progressive du service, ce qui évitera tout temps mort si plusieurs instances de votre service sont en cours d'exécution. Cette fonctionnalité est encore toute nouvelle, vous souhaiterez que la 1.13.1 corrige certains problèmes liés aux mises à jour, et comme pour toute nouvelle nouveauté, des bogues sont toujours en cours de résolution.