ダウンタイムを最小限に抑えて docker-compose コンテナの環境変数を再ロードするにはどうすればよいでしょうか? 質問する

ダウンタイムを最小限に抑えて docker-compose コンテナの環境変数を再ロードするにはどうすればよいでしょうか? 質問する

ドッカー

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:

ファイルを変更した場合.env、最小限のダウンタイムで新しい環境変数を使用するためにコンテナをリロードするにはどうすればよいですか?

ベストアンサー1

docker-compose を使用して yml を実行している場合は、実行するだけdocker-compose up -dで、変更されたコンテナーが再作成され、変更されていないサービスはすべてそのまま残ります。

$ 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

コンテナをdocker stack deploy -c docker-compose.ymlバージョン 3 のファイル形式で実行すると、サービスのローリング アップデートを実行できます。これにより、サービスのインスタンスが複数実行されている場合にダウンタイムを回避できます。この機能はまだ非常に新しいため、アップデートに関する問題の一部を修正するには 1.13.1 が必要になります。また、これほど新しい機能にはすべて言えることですが、バグはまだ修正中です。

おすすめ記事