From 7b09e0fe66d41c7234ce6e6930379a19e2ee9872 Mon Sep 17 00:00:00 2001 From: "flow.gunso" Date: Thu, 2 May 2019 15:39:02 +0200 Subject: [PATCH] Move cron/supervisord/bash alternatives into their own directories --- Dockerfile.bash => assets/bash/Dockerfile | 6 +-- .../docker-entrypoint.sh} | 0 .../seafile-entrypoint.sh} | 0 assets/{ => bash}/seafile-healthcheck.sh | 0 Dockerfile.cron => assets/cron/Dockerfile | 6 +-- .../docker-entrypoint.sh} | 0 .../seafile-entrypoint.sh} | 0 .../seafile-healthcheck.sh} | 0 .../supervisord/Dockerfile | 6 +-- .../docker-entrypoint.sh} | 0 .../seafile-entrypoint.sh} | 0 assets/supervisord/seafile-healthcheck.sh | 47 +++++++++++++++++++ assets/{ => supervisord}/supervisord.conf | 0 13 files changed, 56 insertions(+), 9 deletions(-) rename Dockerfile.bash => assets/bash/Dockerfile (91%) rename assets/{docker-bash-entrypoint.sh => bash/docker-entrypoint.sh} (100%) rename assets/{seafile-bash-entrypoint.sh => bash/seafile-entrypoint.sh} (100%) rename assets/{ => bash}/seafile-healthcheck.sh (100%) rename Dockerfile.cron => assets/cron/Dockerfile (92%) rename assets/{docker-cron-entrypoint.sh => cron/docker-entrypoint.sh} (100%) rename assets/{seafile-cron-entrypoint.sh => cron/seafile-entrypoint.sh} (100%) rename assets/{seafile-cron-healthcheck.sh => cron/seafile-healthcheck.sh} (100%) rename Dockerfile.supervisord => assets/supervisord/Dockerfile (89%) rename assets/{docker-supervisord-entrypoint.sh => supervisord/docker-entrypoint.sh} (100%) rename assets/{seafile-supervisord-entrypoint.sh => supervisord/seafile-entrypoint.sh} (100%) create mode 100755 assets/supervisord/seafile-healthcheck.sh rename assets/{ => supervisord}/supervisord.conf (100%) diff --git a/Dockerfile.bash b/assets/bash/Dockerfile similarity index 91% rename from Dockerfile.bash rename to assets/bash/Dockerfile index a6b37bb..81d93a6 100644 --- a/Dockerfile.bash +++ b/assets/bash/Dockerfile @@ -25,7 +25,7 @@ ENV GID=1000 # Copy over the Docker related files. COPY utils/build/import-seafile-apt-key.sh / -COPY assets/docker-bash-entrypoint.sh /entrypoint.sh +COPY assets/bash/docker-entrypoint.sh /entrypoint.sh # Safely import Seafile APT key, then install both seafile-cli and supervisord. RUN mkdir -p /etc/apt/sources.list.d/ ;\ @@ -50,7 +50,7 @@ RUN mkdir -p /etc/apt/sources.list.d/ ;\ useradd -m -u $UID -g $GID -o -s /bin/bash $UNAME # Copy over the required files for Seafile/SupervisorD. -COPY assets/seafile-healthcheck.sh /home/seafuser/ -COPY assets/seafile-bash-entrypoint.sh /home/seafuser/entrypoint.sh +COPY assets/bash/seafile-healthcheck.sh /home/seafuser/ +COPY assets/bash/seafile-entrypoint.sh /home/seafuser/entrypoint.sh ENTRYPOINT ["/bin/bash", "/entrypoint.sh"] diff --git a/assets/docker-bash-entrypoint.sh b/assets/bash/docker-entrypoint.sh similarity index 100% rename from assets/docker-bash-entrypoint.sh rename to assets/bash/docker-entrypoint.sh diff --git a/assets/seafile-bash-entrypoint.sh b/assets/bash/seafile-entrypoint.sh similarity index 100% rename from assets/seafile-bash-entrypoint.sh rename to assets/bash/seafile-entrypoint.sh diff --git a/assets/seafile-healthcheck.sh b/assets/bash/seafile-healthcheck.sh similarity index 100% rename from assets/seafile-healthcheck.sh rename to assets/bash/seafile-healthcheck.sh diff --git a/Dockerfile.cron b/assets/cron/Dockerfile similarity index 92% rename from Dockerfile.cron rename to assets/cron/Dockerfile index cbdff82..3272c7f 100644 --- a/Dockerfile.cron +++ b/assets/cron/Dockerfile @@ -25,7 +25,7 @@ ENV GID=1000 # Copy over the Docker related files. COPY utils/build/import-seafile-apt-key.sh / -COPY assets/docker-cron-entrypoint.sh /entrypoint.sh +COPY assets/cron/docker-entrypoint.sh /entrypoint.sh # Safely import Seafile APT key, then install both seafile-cli and supervisord. RUN mkdir -p /etc/apt/sources.list.d/ ;\ @@ -55,7 +55,7 @@ RUN mkdir -p /etc/apt/sources.list.d/ ;\ useradd -m -u $UID -g $GID -o -s /bin/bash $UNAME # Copy over the required files for Seafile/SupervisorD. -COPY assets/seafile-cron-healthcheck.sh /home/seafuser/seafile-healthcheck.sh -COPY assets/seafile-cron-entrypoint.sh /home/seafuser/entrypoint.sh +COPY assets/cron/seafile-healthcheck.sh /home/seafuser/seafile-healthcheck.sh +COPY assets/cron/seafile-entrypoint.sh /home/seafuser/entrypoint.sh ENTRYPOINT ["/bin/bash", "/entrypoint.sh"] diff --git a/assets/docker-cron-entrypoint.sh b/assets/cron/docker-entrypoint.sh similarity index 100% rename from assets/docker-cron-entrypoint.sh rename to assets/cron/docker-entrypoint.sh diff --git a/assets/seafile-cron-entrypoint.sh b/assets/cron/seafile-entrypoint.sh similarity index 100% rename from assets/seafile-cron-entrypoint.sh rename to assets/cron/seafile-entrypoint.sh diff --git a/assets/seafile-cron-healthcheck.sh b/assets/cron/seafile-healthcheck.sh similarity index 100% rename from assets/seafile-cron-healthcheck.sh rename to assets/cron/seafile-healthcheck.sh diff --git a/Dockerfile.supervisord b/assets/supervisord/Dockerfile similarity index 89% rename from Dockerfile.supervisord rename to assets/supervisord/Dockerfile index 1bafdb2..bf66fc7 100644 --- a/Dockerfile.supervisord +++ b/assets/supervisord/Dockerfile @@ -25,7 +25,7 @@ ENV GID=1000 # Copy over the Docker related files. COPY utils/build/import-seafile-apt-key.sh / -COPY assets/docker-supervisord-entrypoint.sh /entrypoint.sh +COPY assets/supervisord/dockerentrypoint.sh /entrypoint.sh # Safely import Seafile APT key, then install both seafile-cli and supervisord. RUN mkdir -p /etc/apt/sources.list.d/ ;\ @@ -52,7 +52,7 @@ RUN mkdir -p /etc/apt/sources.list.d/ ;\ useradd -m -u $UID -g $GID -o -s /bin/bash $UNAME # Copy over the required files for Seafile/SupervisorD. -COPY assets/supervisord.conf assets/seafile-healthcheck.sh /home/seafuser/ -COPY assets/seafile-supervisord-entrypoint.sh /home/seafuser/entrypoint.sh +COPY assets/supervisord/supervisord.conf assets/supervisord/seafile-healthcheck.sh /home/seafuser/ +COPY assets/supervisord/seafile-entrypoint.sh /home/seafuser/entrypoint.sh ENTRYPOINT ["/bin/bash", "/entrypoint.sh"] diff --git a/assets/docker-supervisord-entrypoint.sh b/assets/supervisord/docker-entrypoint.sh similarity index 100% rename from assets/docker-supervisord-entrypoint.sh rename to assets/supervisord/docker-entrypoint.sh diff --git a/assets/seafile-supervisord-entrypoint.sh b/assets/supervisord/seafile-entrypoint.sh similarity index 100% rename from assets/seafile-supervisord-entrypoint.sh rename to assets/supervisord/seafile-entrypoint.sh diff --git a/assets/supervisord/seafile-healthcheck.sh b/assets/supervisord/seafile-healthcheck.sh new file mode 100755 index 0000000..16f60d4 --- /dev/null +++ b/assets/supervisord/seafile-healthcheck.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +# Docker Seafile client, help you mount a Seafile library as a volume. +# Copyright (C) 2019, 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 . + +# `seaf-cli status` output csv-like information with tabulates as separators and columns named in comment lines. +# The Seafile client should not be restarted while some statuses are occuring, such as "downloading" or "committing". +# +# This script grabs the output while ignoring the comments to iterate over the informations set to their columns, +# then it compares the statuses, when not empty, to the ones that do not require a restart. Finally either restart or don't. + +seaf=/usr/bin/seaf-cli +dont_restart_on=("downloading" "committing" "waiting for sync") +restart=true + +sleep 10s +while true; do + while IFS=$'\t' read -r name status progress; do + if [ $status ]; then + for dont_restart_on_status in "${dont_restart_on[@]}"; do + if [ "$status" == "$dont_restart_on_status" ]; then + restart=false; break; break + fi + done + fi + done < <($seaf status | grep -v "^#") + + if $restart; then + $seaf stop + $seaf start + fi + + sleep 10m +done \ No newline at end of file diff --git a/assets/supervisord.conf b/assets/supervisord/supervisord.conf similarity index 100% rename from assets/supervisord.conf rename to assets/supervisord/supervisord.conf