mirror of
https://github.com/retspen/webvirtcloud
synced 2026-11-09 11:46:49 +00:00
The container's health check only fetched the login page, through nginx and gunicorn. A job worker, novncd or socketiod that kept failing (runit starts it again each second) left the container healthy while jobs waited and consoles failed. The check now also asks runit for each service and fails when one is down or has run for less than five seconds.
14 lines
818 B
Bash
Executable file
14 lines
818 B
Bash
Executable file
#!/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
|