Compare commits
11 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
7e8ac6bbd1 | |
|
|
3cca493648 | |
|
|
54ab5919e2 | |
|
|
3ac73e6d28 | |
|
|
b2cfba373e | |
|
|
9182e656bf | |
|
|
16b974afd1 | |
|
|
604b803f74 | |
|
|
ab0944cbff | |
|
|
cf008cd284 | |
|
|
0421c8b8d9 |
16
Dockerfile
16
Dockerfile
|
|
@ -16,7 +16,7 @@ RUN export DEBIAN_FRONTEND=noninteractive; \
|
|||
cron \
|
||||
postgresql postgresql-contrib \
|
||||
&& curl -L \
|
||||
https://github.com/miniflux/miniflux/releases/download/2.0.19/miniflux_2.0.19_amd64.deb \
|
||||
https://github.com/miniflux/miniflux/releases/download/2.0.36/miniflux_2.0.36_amd64.deb \
|
||||
> /miniflux.deb \
|
||||
&& dpkg -i /miniflux.deb \
|
||||
&& mkdir -p /mnt/save
|
||||
|
|
@ -39,22 +39,16 @@ ENV RUN_MIGRATIONS=0
|
|||
ENV CREATE_ADMIN=0
|
||||
|
||||
COPY --from=builder /pause/pauser /pauser
|
||||
COPY backup.sh /
|
||||
COPY restore.sh /
|
||||
COPY entrypoint.sh /
|
||||
|
||||
USER root
|
||||
### CRON BACKUPS
|
||||
RUN true \
|
||||
&& echo 'b=$(date +%Y%m%d%H%M%S); mkdir -p /mnt/save/$b; pg_dump $DATABASE_URL --clean > /mnt/save/$b/pg.dump || (rm -rf /mnt/save/$b; echo "backup failed; deleting $b"; exit 1); exit $?' > /backup.sh \
|
||||
&& echo 'b=$(find /mnt/save -type f | sort | tail -n 1); if [ -n "$b" ]; then echo restoring $b; psql $DATABASE_URL < "$b"; fi && service postgresql start;' > /restore.sh \
|
||||
&& echo '0 4,8,12,16,20 * * * bash /backup.sh >> /var/log/cronj.log 2>&1' > /etc/cron.d/backups \
|
||||
&& echo '' >> /etc/cron.d/backups \
|
||||
&& chmod 0644 /etc/cron.d/backups \
|
||||
&& touch /var/log/cronj.log
|
||||
|
||||
ENTRYPOINT \
|
||||
service postgresql start \
|
||||
&& until psql $DATABASE_URL < /dev/null; do sleep 5; done \
|
||||
&& bash /restore.sh \
|
||||
&& miniflux -migrate \
|
||||
&& miniflux -create-admin \
|
||||
&& miniflux \
|
||||
& exec /pauser
|
||||
ENTRYPOINT bash /entrypoint.sh
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
b=$(date +%Y%m%d%H%M%S)
|
||||
mkdir -p /mnt/save/$b
|
||||
(
|
||||
set -e
|
||||
pg_dump $DATABASE_URL --clean > /mnt/save/$b/.pg.dump
|
||||
mv /mnt/save/$b/{.,""}pg.dump
|
||||
) \
|
||||
|| (
|
||||
rm -rf /mnt/save/$b
|
||||
echo "backup failed; deleting $b"
|
||||
exit 1
|
||||
)
|
||||
if du -sh /mnt/save/$b | grep -Ei "^[ ]*(4|2.).0K"; then
|
||||
rm -rf /mnt/save/$b
|
||||
echo rm empty backup $b
|
||||
fi
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
#! /bin/bash
|
||||
|
||||
LOG=/tmp/bel.log
|
||||
|
||||
main() {
|
||||
echo "" > $LOG
|
||||
|
||||
ensure start_postgres
|
||||
until psql $DATABASE_URL < /dev/null; do sleep 5; done
|
||||
|
||||
bash /restore.sh
|
||||
|
||||
miniflux -migrate
|
||||
miniflux -create-admin
|
||||
ensure miniflux
|
||||
|
||||
exec /pauser
|
||||
}
|
||||
|
||||
start_postgres() {
|
||||
service postgresql start
|
||||
psql $DATABASE_URL
|
||||
}
|
||||
|
||||
ensure() {
|
||||
_ensure "$@" &>> $LOG & disown
|
||||
}
|
||||
|
||||
_ensure() {
|
||||
while true; do
|
||||
echo $(date): ensuring "$@" >&2
|
||||
"$@"
|
||||
sleep 3
|
||||
done
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
all_backups=($(find /mnt/save -not -path '*/\.*' -type f | sort -r))
|
||||
for ((i=${#all_backups[@]}-1; i>50; i--)); do
|
||||
echo rm old backpu ${all_backups[i]} >&2
|
||||
rm -f ${all_backups[i]} || true
|
||||
done
|
||||
|
||||
for b in "${all_backups[@]}"; do
|
||||
if [ -n "$b" ]; then
|
||||
du -sh "$b"
|
||||
if ! du -sh "$b" | grep -Ei "^[ \t]*[0-9][0-9]*[0-9]?(.0)?[mg]"; then
|
||||
echo would rm empty backup $b >&2
|
||||
set -x
|
||||
mv "$b" "${b%/*}/.${b##*/}"
|
||||
set +x
|
||||
continue
|
||||
fi
|
||||
echo restoring $b >&2
|
||||
if psql $DATABASE_URL < "$b"; then
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
service postgresql start
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue