どうもてぃです。
Herokuのようにインスタンスを定期的に再起動したい。そんなことを思ったことはありませんか?僕だけですか?
自社サービスをコンテナで動かしているのですが、原因不明でVMにアクセスできなくなり、VMを再起動しコンテナも同じく再起動する…といったかなり良くない運用方法で進めていたので、コンテナを定期的に再起動して対応してみました(主な原因としては、workerのコンテナでredisと突然接続できなくなるものでした)。
環境
slack-dockerを使用する
当初はcronでコンテナを再起動したあと、slack通知用にスクリプトを組もうと考えていて、cron実行ユーザー用に環境を作ろうか…と思いましたがめんどくさくなり、
「え、これもコンテナでよくね?なんかimageあるやろ」
と思いしらべたらすぐに見つかりました。
slack-dockerコンテナにホスト側のdockerプロセスを同期し、更に通知したいwebhook urlを渡してあげるだけで通知が完了します。
slackのincoming webhookのURLは↓
https://my.slack.com/services/new/incoming-webhook
URLが出てきたら以下のコマンドを実行する。
$ docker run -d -e webhook="上で作ったincoming webhook url" -h "$(hostname)" -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/int128/slack-docker
設定がうまくいくとchannelに通知が行きます
すばらしい...
IaaSでdockerを使う場合はこれを採用すると幸せになりますね(IaaSでコンテナ立てるのは微妙なんですがね)