web-dev-qa-db-fra.com

Comment recharger des variables d'environnement dans un conteneur docker-compose avec un temps d'arrêt minimal?

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?

38
Marcos Costa Pinto

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.

54
BMitch