maateen / dockohealer

Monitor and restart unhealthy docker containers.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

dockohealer

Build Status Docker Cloud Build Status GitHub go.mod Go version Go Report Card Maintenance GitHub

This daemon monitors and restarts unhealthy docker containers instantly. This project is inspired from docker-autoheal and written on GoLang with love.

Installation

Build from source

$ git clone https://github.com/maateen/dockohealer.git
$ cd dockohealer/cmd/dockohealer
$ buildTime=$(date +'%Y-%m-%d_%T')
$ gitSHA=$(git rev-parse HEAD)
$ versionString=$(git tag --sort=committerdate | tail -1)
$ go build -ldflags "-X main.buildTime=$buildTime -X main.gitSHA=$gitSHA -X main.versionString=$versionString"

Use binary

$ export VERSION=v0.3
$ export OS=linux
$ export ARCH=amd64
$ wget https://github.com/maateen/dockohealer/releases/download/$VERSION/dockohealer-$OS-$ARCH-$VERSION
$ mv dockohealer-$OS-$ARCH-$VERSION /usr/local/bin/dockohealer
$ chmod +x /usr/local/bin/dockohealer

Usage

Standalone

$ dockohealer -version

{"buildTime":"","gitSHA":"","level":"info","msg":"","time":"2020-06-20T19:38:43+06:00","version":""}

$ dockohealer

{"level":"info","msg":"Connected to Docker.","time":"2020-04-04T15:26:05+06:00"}
{"level":"info","msg":"Listening from Docker.","time":"2020-04-04T15:26:05+06:00"}
{"containerID":"5e37d4624fbaa128d1fbdd21e3a4cf0aa78eeff48e8902ef60eca95496d3155c","level":"info","msg":"Container is unhealthy.","time":"2020-04-04T15:26:15+06:00"}
{"containerID":"5e37d4624fbaa128d1fbdd21e3a4cf0aa78eeff48e8902ef60eca95496d3155c","level":"info","msg":"Restarting container.","time":"2020-04-04T15:26:15+06:00"}
{"containerID":"5e37d4624fbaa128d1fbdd21e3a4cf0aa78eeff48e8902ef60eca95496d3155c","level":"info","msg":"Successfully restarted container.","time":"2020-04-04T15:26:15+06:00"}

Docker Container

$ docker run -d \
      --name dockohealer \
      --restart=always \
      -v /var/run/docker.sock:/var/run/docker.sock \
      maateen/dockohealer

Process Manager

In case of running as standalone binary, you should use systemd or supervisor to keep this daemon in running state always.

Road map

  • Restart already unhealthy containers
  • Add flags to the daemon
  • Launch a dockerized version

About

Monitor and restart unhealthy docker containers.

License:GNU General Public License v3.0


Languages

Language:Go 72.9%Language:Makefile 14.9%Language:Dockerfile 12.2%