塩焼きブログ

塩焼きに関しての研究内容を公開しています

Docker Swarmで立ち上がっているサービスをdocker service updateでパラメータを更新せずに更新する

環境変数の変更やDocker Imageが変更されれば通常のデプロイでコンテナは更新されます。

しかしコンテナが定期的に外部より情報を取得し内部にキャッシュするような構造の場合において、即時にそのキャッシュをリロードしたい時、再デプロイをするために環境変数をイジったりイメージを更新するのはだるいです。そこで docker service update --force っていうのがあります。

$ docker service update --force test_app
test_app
overall progress: 2 out of 2 tasks 
1/2: running   [==================================================>] 
2/2: running   [==================================================>] 
verify: Service converged 

ヘルスチェックを指定しておけばコンテナが正しく立ち上がるのを確認してから一つずつ差し替わるので、気軽に実行できます。

あとは公式ドキュメントによれば --update-delay ってのがあって更新における遅延時間を指定できるみたいです。これで一気に差し替わって応答不能みたいなことが無いようにできるのかな。

https://docs.docker.com/engine/reference/commandline/service_update/