Implement a basic healthcheck

This commit is contained in:
flow.gunso
2020-01-06 18:27:42 +01:00
parent eb5c9a1650
commit 7543a06f51
2 changed files with 31 additions and 1 deletions

View File

@@ -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"]
CMD ["/entrypoint.sh"]
HEALTHCHECK --interval=5m --start-period=20s --retries=1 CMD ["su", "-", "${UNAME}", "-c", "/healthcheck.sh"]

View File

@@ -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 <https://www.gnu.org/licenses/>.
# 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 "^#")