From 7543a06f5100d6b6cf735c9e66fe9a43b3665ea7 Mon Sep 17 00:00:00 2001 From: "flow.gunso" Date: Mon, 6 Jan 2020 18:27:42 +0100 Subject: [PATCH] Implement a basic healthcheck --- seafile-client/Dockerfile | 4 +++- seafile-client/docker-healthcheck.sh | 28 ++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100755 seafile-client/docker-healthcheck.sh diff --git a/seafile-client/Dockerfile b/seafile-client/Dockerfile index 423befb..2087984 100644 --- a/seafile-client/Dockerfile +++ b/seafile-client/Dockerfile @@ -66,10 +66,12 @@ RUN apt-get update && apt-get install -y gnupg && \ # Copy over the entrypoints, healthchecks and tests. COPY docker-entrypoint.sh /entrypoint.sh +COPY docker-healthcheck.sh /healthcheck.sh COPY seafile-healthcheck.sh /home/seafuser/healthcheck.sh COPY seafile-entrypoint.sh /home/seafuser/entrypoint.sh COPY tests /tests # Set bash as the entrypoint and run the entrypoint script from that. ENTRYPOINT ["/bin/bash"] -CMD ["/entrypoint.sh"] \ No newline at end of file +CMD ["/entrypoint.sh"] +HEALTHCHECK --interval=5m --start-period=20s --retries=1 CMD ["su", "-", "${UNAME}", "-c", "/healthcheck.sh"] \ No newline at end of file diff --git a/seafile-client/docker-healthcheck.sh b/seafile-client/docker-healthcheck.sh new file mode 100755 index 0000000..298f5e9 --- /dev/null +++ b/seafile-client/docker-healthcheck.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# Docker Seafile client, help you mount a Seafile library as a volume. +# Copyright (C) 2019-2020, flow.gunso@gmail.com +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Grab the status of the active repos then return as healthy/unhealthy +# depending the healthy statuses. + +healthy_statuses=("downloading" "waiting for sync", "uploading", "downloading files", "downloading file list") +while IFS=$'\t' read -r name status; do + for healthy_status in "${healthy_statuses[@]}"; do + if [[ "$status" == "$healthy" ]]; then exit 0; fi + done + exit 1 +done < <(seaf-cli status | grep -v "^#")