mirror of
https://github.com/lobaro/restic-backup-docker.git
synced 2026-02-17 09:23:56 +00:00
Merge pull request #38 from lobaro/alpine
Merge Alpine to master for #4
This commit is contained in:
23
Dockerfile
23
Dockerfile
@@ -1,4 +1,4 @@
|
||||
FROM alpine as certs
|
||||
FROM alpine:3.10.1 as certs
|
||||
RUN apk add --no-cache ca-certificates
|
||||
|
||||
# Get restic executable
|
||||
@@ -14,6 +14,9 @@ RUN unzip rclone-current-linux-amd64.zip && mv rclone-*-linux-amd64/rclone /bin/
|
||||
|
||||
FROM busybox:glibc
|
||||
|
||||
# install mailx
|
||||
RUN apk add --update --no-cache heirloom-mailx
|
||||
|
||||
COPY --from=certs /etc/ssl/certs /etc/ssl/certs
|
||||
COPY --from=certs /bin/restic /bin/restic
|
||||
COPY --from=rclone /bin/rclone /bin/rclone
|
||||
@@ -22,14 +25,14 @@ RUN \
|
||||
mkdir -p /mnt/restic /var/spool/cron/crontabs /var/log; \
|
||||
touch /var/log/cron.log;
|
||||
|
||||
ENV \
|
||||
RESTIC_REPOSITORY=/mnt/restic \
|
||||
RESTIC_PASSWORD="" \
|
||||
RESTIC_TAG="" \
|
||||
NFS_TARGET="" \
|
||||
BACKUP_CRON="0 */6 * * *" \
|
||||
RESTIC_FORGET_ARGS="" \
|
||||
RESTIC_JOB_ARGS=""
|
||||
ENV RESTIC_REPOSITORY=/mnt/restic
|
||||
ENV RESTIC_PASSWORD=""
|
||||
ENV RESTIC_TAG=""
|
||||
ENV NFS_TARGET=""
|
||||
ENV BACKUP_CRON="0 */6 * * *"
|
||||
ENV RESTIC_FORGET_ARGS=""
|
||||
ENV RESTIC_JOB_ARGS=""
|
||||
ENV MAILX_ARGS=""
|
||||
|
||||
# /data is the dir where you have to put the data to be backed up
|
||||
VOLUME /data
|
||||
@@ -41,4 +44,4 @@ COPY entry.sh /entry.sh
|
||||
WORKDIR "/"
|
||||
|
||||
ENTRYPOINT ["/entry.sh"]
|
||||
CMD ["tail","-fn0","/var/log/cron.log"]
|
||||
CMD ["tail","-fn0","/var/log/cron.log"]
|
||||
|
||||
@@ -60,7 +60,7 @@ docker logs
|
||||
```
|
||||
Shows `/var/log/cron.log`
|
||||
|
||||
Additionally you can see the the full log, including restic output, of the last execution in `/var/log/backup-last.log`. When the backup fails the log is copied to `/var/log/restic-error-last.log`.
|
||||
Additionally you can see the the full log, including restic output, of the last execution in `/var/log/backup-last.log`. When the backup fails the log is copied to `/var/log/restic-error-last.log`. If configured, you can find the full output of the mail notification in `/var/log/mail-last.log`.
|
||||
|
||||
# Customize the Container
|
||||
|
||||
@@ -77,6 +77,7 @@ The container is setup by setting [environment variables](https://docs.docker.co
|
||||
* `RESTIC_JOB_ARGS` - Optional. Allows to specify extra arguments to the back up job such as limiting bandwith with `--limit-upload` or excluding file masks with `--exclude`.
|
||||
* `AWS_ACCESS_KEY_ID` - Optional. When using restic with AWS S3 storage.
|
||||
* `AWS_SECRET_ACCESS_KEY` - Optional. When using restic with AWS S3 storage.
|
||||
* `MAILX_ARGS` - Optional. If specified, the content of `/var/log/backup-last.log` is sent via mail after each backup using an *external SMTP*. To have maximum flexibility, you have to specify the mail/smtp parameters by your own. Have a look at the [mailx manpage](https://linux.die.net/man/1/mailx) for further information. Example value: `-e "MAILX_ARGS=-r 'from@example.de' -s 'Result of the last restic backup run' -S smtp='smtp.example.com:587' -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user='username' -S smtp-auth-password='password' 'to@example.com'"`.
|
||||
|
||||
## Volumes
|
||||
|
||||
|
||||
12
backup.sh
12
backup.sh
@@ -1,6 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
lastLogfile="/var/log/backup-last.log"
|
||||
lastMailLogfile="/var/log/mail-last.log"
|
||||
|
||||
copyErrorLog() {
|
||||
cp ${lastLogfile} /var/log/backup-error-last.log
|
||||
@@ -11,7 +12,7 @@ logLast() {
|
||||
}
|
||||
|
||||
start=`date +%s`
|
||||
rm -f ${lastLogfile}
|
||||
rm -f ${lastLogfile} ${lastMailLogfile}
|
||||
echo "Starting Backup at $(date +"%Y-%m-%d %H:%M:%S")"
|
||||
echo "Starting Backup at $(date)" >> ${lastLogfile}
|
||||
logLast "BACKUP_CRON: ${BACKUP_CRON}"
|
||||
@@ -50,3 +51,12 @@ fi
|
||||
|
||||
end=`date +%s`
|
||||
echo "Finished Backup at $(date +"%Y-%m-%d %H:%M:%S") after $((end-start)) seconds"
|
||||
|
||||
if [ -n "${MAILX_ARGS}" ]; then
|
||||
sh -c "mailx -v -S sendwait ${MAILX_ARGS} < ${lastLogfile} > ${lastMailLogfile} 2>&1"
|
||||
if [ $? == 0 ]; then
|
||||
echo "Mail notification successfully sent."
|
||||
else
|
||||
echo "Sending mail notification FAILED. Check ${lastMailLogfile} for further information."
|
||||
fi
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user