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