Docker の Option を改めて理解できた話 & 運用規則は統一すると幸せ
はじめに
Docker restart: always
option の理解をしていなかったことで、余計な作業をしてしまったのでメモとして残しておこうかと。
知らないってことは、ベストな選択ができないってことになるので間違った方向にいく可能性も出てきます。
今回で言うと、restart: always
を理解していなかったことで、わざわざ、Dokcer コンテナを起動するコマンドを、シェルスクリプトに書いて、cron で実行する。っという流れで運用しようとしてしまった次第です ...
プロジェクトメンバの方に、「docker-compose.yml
に restart: always
を追記したら、常にコンテナが再起動するから」とアドバイスを頂き余計な運用フローを踏まずにすみました!!
経緯
-
私から Azure VM の自動起動停止設定を 23:00 - 01:00 に設定すれば、運用コストを抑えることができると提案
-
ならそうしましょう!っとインフラ側からも合意を得る
-
ただ、このままだったら、VM 起動しても Docker Service は起動しているが、Dokcer コンテナが起動しない ...
-
一応そのことを、プロジェクトメンバに連携
❌
わたし: じゃあ、 Docker start & stop を追加して VM 動作検証しますね!!👉 5 のながれに進む。
こういえばよかったなっと
⭕️
わたし: 今のままだと、VM 起動した際、Docker コンテナが起動しておらず、毎回docker start {コンテナ名}
が必要です。なのでシェルスクリプトで対応しますね!!と言う感じにすれば、伝わったかなっと。
-
VM 起動しても Docker コンテナが起動していない.
-
なら、シェルスクリプトで書けばいいか。っということで、以下の流れで作成して、検証VM でも意図した動きになる。
run.sh# 1. Docker コンテナ起動 docker start {コンテナ名} # 2. 対象スクリプトを実行 python {スクリプト名}.py # 3. Docker コンテナ停止 docker stop {コンテナ名}
-
PR 作成して、レビュー依頼
-
インフラの方から質問もらう
「あれ。その方法でやった意図はなんでですかね」っと確認が入る。 -
無駄な作業だったことが発覚
わたし: 「え、システム起動で Docker コンテナ自動起動できる方法があるんですか?」 -
仕切り直し
docker-compose.yml
にrestart: always
を追加して動作確認。
よかった点
常やっていることを、プロジェクトメンバに共有しながらタスクを進めていたことで、間違った運用規約に気付けた。
なぜ、シェルスクリプトを作成して Docker コンテナを起動する方法をとったのかメンバに事情を連携。もし、細かなやりとりを連携してなければ、別システムの運用規則と違った形となり、メンテナンスコストも上がる。
それに、今後改修が入るときに、「なんでこのシステムだけシェルスクリプトで Docker 制御をしているんだ?? 何か意図があるかもしれない。下手に運用手順を変えれないな」っとなり無駄に考えるコストも増える。
まとめ
以上を踏まえ、やっていることはプロジェクトメンバとコミュニケーションを取りつつ、ストレスのない運用を目指していければ幸せにつながりそうです!!
そもそも、VM で運用する自体選択枠から外せるなら尚良きです! OS Update の対応が必要だったりとデメリットがあるから。
Azure Functions, Kubbernetes など他の選択もあるのだから!
知らないということは、それだけ無駄なことを一生懸命やってしまうっているかもしれませんね。
Discussion