Sign inSign up

darkobg/autoheal

By darkobg

•Updated about 4 years ago

Monitor and restart unhealthy docker containers with added Pushover notification.

Image
0

224

darkobg/autoheal repository overview

⁠Docker Autoheal & Pushover⁠

Monitor and restart unhealthy docker containers with added Pushover notification. This functionality was proposed to be included with the addition of HEALTHCHECK, however didn't make the cut. This container is a stand-in till there is native support for --exit-on-unhealthy https://github.com/docker/docker/pull/22719⁠.

⁠How to use

⁠UNIX socket passthrough
docker run -d \
    --name autoheal \
    --restart=always \
    -e AUTOHEAL_CONTAINER_LABEL=all \
    -v /var/run/docker.sock:/var/run/docker.sock \
    darkobg/autoheal
⁠TCP socket
docker run -d \
    --name autoheal \
    --restart=always \
    -e AUTOHEAL_CONTAINER_LABEL=all \
    -e DOCKER_SOCK=tcp://HOST:PORT \
    -v /path/to/certs/:/certs/:ro \
    darkobg/autoheal

a) Apply the label autoheal=true to your container to have it watched.

b) Set ENV AUTOHEAL_CONTAINER_LABEL=all to watch all running containers.

c) Set ENV AUTOHEAL_CONTAINER_LABEL to existing label name that has the value true.

Note: You must apply HEALTHCHECK to your docker images first. See https://docs.docker.com/engine/reference/builder/#healthcheck⁠ for details. See https://docs.docker.com/engine/security/https/⁠ for how to configure TCP with mTLS

The certificates, and keys need these names:

  • ca.pem
  • client-cert.pem
  • client-key.pem
⁠Change Timezone

If you need the timezone to match the local machine, you can map the /etc/localtime into the container.

docker run ... -v /etc/localtime:/etc/localtime:ro

⁠ENV Defaults

AUTOHEAL_CONTAINER_LABEL=autoheal
AUTOHEAL_INTERVAL=5   # check every 5 seconds
AUTOHEAL_START_PERIOD=0   # wait 0 seconds before first health check
AUTOHEAL_DEFAULT_STOP_TIMEOUT=10   # Docker waits max 10 seconds (the Docker default) for a container to stop before killing during restarts (container overridable via label, see below)
DOCKER_SOCK=/var/run/docker.sock   # Unix socket for curl requests to Docker API
CURL_TIMEOUT=30     # --max-time seconds for curl requests to Docker API
WEBHOOK_URL=""    # post message to the webhook if a container was restarted (or restart failed)
PUSHOVER=false    # Pushover notification 
PUSHOVER_API=""   # Pushover API Key
PUSHOVER_USER=""  # Pushover USER KEy
PUSHOVER_TITLE="" # Pushover Title
⁠Optional Container Labels
autoheal.stop.timeout=20        # Per containers override for stop timeout seconds during restart

⁠Testing

docker build -t autoheal .

docker run -d \
    -e AUTOHEAL_CONTAINER_LABEL=all \
    -v /var/run/docker.sock:/var/run/docker.sock \
    autoheal                                                                        

⁠Docker compose

  ############
  ##Autoheal##
  ############

  # Autoheal - Docker container automatic restart on healthcheck fail
  autoheal:
    image: darkobg/autoheal:latest
    container_name: autoheal
    hostname: autoheal
    environment:
      - AUTOHEAL_DEFAULT_STOP_TIMEOUT=30   # Docker waits max 10 seconds (the Docker default) for a container to stop before killing during restarts
      - AUTOHEAL_START_PERIOD=60   # wait 0 seconds before first health check
      - AUTOHEAL_INTERVAL=5   # check every 5 seconds
      - CURL_TIMEOUT=30     # --max-time seconds for curl requests to Docker API
      - DOCKER_SOCK=/var/run/docker.sock   # Unix socket for curl requests to Docker API
      - WEBHOOK_URL=      # post message to the webhook if a container was restarted (or restart failed)
      - PUSHOVER=false    # Pushover notification 
      - PUSHOVER_API=""   # Pushover API Key
      - PUSHOVER_USER=""  # Pushover USER KEy
      - PUSHOVER_TITLE="" # Pushover Title
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /etc/localtime:/etc/localtime:ro
    labels:
      - "autoheal=true"
    restart: unless-stopped

CREDIT: https://github.com/willfarrell/docker-autoheal⁠

Tag summary

Content type

Image

Digest

sha256:70205585c…

Size

4.1 MB

Last updated

about 4 years ago

docker pull darkobg/autoheal