1
0
Fork 0
mirror of https://github.com/yavook/kiwi-backup.git synced 2024-11-25 00:02:59 +00:00
kiwi-backup/Dockerfile

115 lines
2.6 KiB
Docker
Raw Permalink Normal View History

FROM yavook/kiwi-cron:0.2
2020-08-26 23:30:14 +00:00
LABEL maintainer="jmm@yavook.de"
2022-03-02 16:30:22 +00:00
COPY requirements.txt /tmp/
# full install of duplicity distribution
2020-08-26 23:30:14 +00:00
RUN set -ex; \
\
2022-03-02 16:30:22 +00:00
# duplicity software dependencies
2021-09-21 16:39:14 +00:00
apk --no-cache add \
2020-08-26 23:30:14 +00:00
ca-certificates \
gettext \
gnupg \
lftp \
libffi \
librsync \
libxml2 \
libxslt \
2021-09-21 16:39:14 +00:00
openssh-client \
2020-08-26 23:30:14 +00:00
openssl \
python3 \
2022-10-14 11:06:20 +00:00
py3-pip \
2022-03-03 22:52:40 +00:00
py3-six \
2020-08-26 23:30:14 +00:00
rsync \
; \
2022-03-02 16:30:22 +00:00
update-ca-certificates; \
2020-08-26 23:30:14 +00:00
\
# python packages buildtime dependencies
2021-09-21 16:39:14 +00:00
apk --no-cache add --virtual .build-deps \
2020-08-26 23:30:14 +00:00
gcc \
git \
2020-08-26 23:30:14 +00:00
libffi-dev \
librsync-dev \
libxml2-dev \
libxslt-dev \
make \
musl-dev \
openssl-dev \
python3-dev \
cargo \
; \
# make use of prebuilt wheels where possible
python3 -m pip --no-cache-dir \
2022-10-20 10:02:46 +00:00
install --upgrade wheel \
2020-08-26 23:30:14 +00:00
; \
\
# install duplicity
python3 -m pip --no-cache-dir \
2022-10-20 10:02:46 +00:00
install --upgrade --requirement /tmp/requirements.txt \
2020-08-26 23:30:14 +00:00
; \
python3 -m pip --no-cache-dir \
2022-10-20 10:02:46 +00:00
install --upgrade duplicity \
; \
2020-08-26 23:30:14 +00:00
\
# cleanup
python3 -m pip --no-cache-dir \
2022-10-20 09:58:09 +00:00
uninstall --yes wheel \
; \
apk del --purge .build-deps; \
2022-03-02 01:56:44 +00:00
rm -f "/tmp/requirements.txt"; \
2022-03-02 17:41:47 +00:00
rm -rf "${HOME}/.cargo";
# start of kiwi additions here
2022-03-02 17:41:47 +00:00
RUN set -ex; \
\
# create /kiwi-backup directory structure
2022-03-02 17:41:47 +00:00
mkdir -m 777 /kiwi-backup; \
mkdir -m 777 /kiwi-backup/source; \
mkdir -m 777 /kiwi-backup/target; \
2022-03-02 16:30:22 +00:00
\
# we need to run as root in container.
# otherwise, we might miss directories in backup source!
mkdir -p "/root/.cache/duplicity"; \
mkdir -pm 700 "/root/.gnupg"; \
2022-03-02 17:41:47 +00:00
\
# confirm duplicity is working
duplicity --version;
2022-03-02 01:39:19 +00:00
VOLUME [ "/root/.cache/duplicity" ]
2022-03-02 01:39:19 +00:00
ENV \
#################
# BACKUP POLICY #
#################
2022-03-03 00:02:38 +00:00
SCHEDULE_BACKUP="R 2 * * *" \
SCHEDULE_CLEANUP="R 4 * * *" \
2020-08-28 01:22:05 +00:00
FULL_BACKUP_FREQUENCY=3M \
BACKUP_RETENTION_TIME=6M \
KEEP_NUM_FULL_CHAINS=2 \
\
######################
# ADDITIONAL OPTIONS #
######################
2022-03-03 00:02:38 +00:00
SCHEDULE_RMFULL="R 5 * * SAT" \
SCHEDULE_RMINCR="R 5 * * SUN" \
BACKUP_VOLSIZE=1024 \
2022-03-02 17:41:47 +00:00
BACKUP_SOURCE="/kiwi-backup/source" \
BACKUP_TARGET="file:///kiwi-backup/target" \
OPTIONS_ALL="" \
OPTIONS_BACKUP="" \
OPTIONS_CLEANUP="" \
OPTIONS_RMFULL="" \
2020-08-27 14:53:19 +00:00
OPTIONS_RMINCR="" \
\
##############
# ENCRYPTION #
##############
GPG_KEY_ID="" \
GPG_PASSPHRASE=""
2022-03-02 16:30:22 +00:00
COPY bin /usr/local/bin/
COPY libexec /usr/local/libexec/
2022-03-02 17:41:47 +00:00
CMD [ "kiwi-backup" ]