地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【Docker】docker-compose 死活監視設定

docs.docker.com

docker-composeでコンテナ内プロセスの死活監視を行うことできる。

healthcheck:
  test: ["CMD", "curl", "-f", "http://localhost"]
  interval: 1m30s
  timeout: 10s
  retries: 3
  start_period: 40s

healthcheckに実行したいコマンドとtimeoutや切り離しの契機を記載するのみで簡易的に動く。

testで指定したコマンドが失敗すればunhealthyとなる。

unhealthyをinspectで監視しておけば内部で使うだけのツールなら十分な感じかと思う。

$ while true; do [[ $(docker container inspect ${コンテナID} | jq '.[0].State.Health.Log') -eq "null" ]] && curl 通知とか再起動処理とか && sleep 1; done

コンテナ自体をステートレスにしておけば上の死活監視 + 再起動だけで自動復旧可能かな。