Rubyと筋肉とギターとわたし

筋トレが仕事です

【docker】コンテナの再起動を通知したい

どうもてぃです。

Herokuのようにインスタンスを定期的に再起動したい。そんなことを思ったことはありませんか?僕だけですか?

自社サービスをコンテナで動かしているのですが、原因不明でVMにアクセスできなくなり、VMを再起動しコンテナも同じく再起動する…といったかなり良くない運用方法で進めていたので、コンテナを定期的に再起動して対応してみました(主な原因としては、workerのコンテナでredisと突然接続できなくなるものでした)。

環境

  • GCE (VM: CentOS)
  • docker
  • docker-compose(アプリケーション側の構成用)

slack-dockerを使用する

当初はcronでコンテナを再起動したあと、slack通知用にスクリプトを組もうと考えていて、cron実行ユーザー用に環境を作ろうか…と思いましたがめんどくさくなり、

「え、これもコンテナでよくね?なんかimageあるやろ」

と思いしらべたらすぐに見つかりました。

github.com

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に通知が行きます

f:id:rdwbocungelt5:20211116100001p:plain

すばらしい...

IaaSでdockerを使う場合はこれを採用すると幸せになりますね(IaaSでコンテナ立てるのは微妙なんですがね)