1
0
mirror of https://github.com/zokradonh/kopano-docker.git synced 2026-08-21 21:33:02 +00:00

wip: Implement a scheduler to run recurring tasks (such as z-push-gabsync) (#123)

* add scheduler container for gabsync
Adds a general scheduler container to trigger tasks within containers.
Also adds gabsync to zpush image
* make scheduler dynamic
execute each cron job once at startup to see if they would succeed
* remove services scripts from core container (now is part of the scheduler)
* add "CRONDELAY" for tasks that should not be executed at startup
* add documentation
* clear out crontab at startup
This commit is contained in:
Felix Bartels
2019-03-24 17:33:41 +01:00
committed by GitHub
parent 830ac3c838
commit caac8a5c03
12 changed files with 114 additions and 22 deletions
+17
View File
@@ -0,0 +1,17 @@
FROM docker:18.09.1
RUN apk --no-cache add bash
ENV SUPERCRONIC_VERSION 0.1.8
RUN wget https://github.com/aptible/supercronic/releases/download/v${SUPERCRONIC_VERSION}/supercronic-linux-amd64 \
-O /usr/local/bin/supercronic \
&& chmod +x /usr/local/bin/supercronic
ENV DOCKERIZE_VERSION v0.6.1
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& tar -C /usr/local/bin -xzvf dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& rm dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz
COPY start.sh /usr/local/bin/
CMD ["start.sh"]
+37
View File
@@ -0,0 +1,37 @@
#!/bin/bash
set -eo pipefail
cronfile=/etc/crontab
# purge existing entries from crontab
true > "$cronfile"
for cronvar in ${!CRON_*}; do
cronvalue=${!cronvar}
echo "Adding $cronvalue to crontab"
echo "$cronvalue" >> "$cronfile"
done
for cronvar in ${!CRONDELAYED_*}; do
cronvalue=${!cronvar}
echo "Adding $cronvalue to crontab"
echo "$cronvalue" >> "$cronfile"
done
# wait for kopano_server statup to run one-off commands
dockerize \
-wait tcp://kopano_server:236 \
-timeout 360s
echo "creating public store"
docker exec kopano_server kopano-storeadm -h default: -P || true
# run sheduled cron jobs once
for cronvar in ${!CRON_*}; do
cronvalue=${!cronvar}
croncommand=$(echo "$cronvalue" | cut -d ' ' -f 6-)
echo "Running: $croncommand"
$croncommand
done
exec supercronic /etc/crontab