ドッカー
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 が必要になります。また、これほど新しい機能にはすべて言えることですが、バグはまだ修正中です。