#!/bin/sh # Docker's health check: the panel answers through nginx, and every service # has run for a few seconds. runit starts a failing service again each # second, so one that keeps failing (the worker, novncd, socketiod) is never # up that long. /srv/webvirtcloud/venv/bin/python3 -c "import urllib.request as u; u.urlopen(u.Request('http://127.0.0.1/accounts/login/', headers={'X-Forwarded-Proto': 'https'}), timeout=5)" || exit 1 for service in nginx webvirtcloud webvirtcloud-worker novnc socketiod; do # "run: /etc/service/novnc: (pid 60) 45556s" uptime=$(sv status "/etc/service/$service" | sed -n 's/^run: [^)]*) \([0-9]*\)s.*/\1/p') if [ -z "$uptime" ] || [ "$uptime" -lt 5 ]; then echo "$service is not running steadily: $(sv status "/etc/service/$service")" exit 1 fi done