forked from our-source/restic
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
47 lines (37 loc) · 1.41 KB
/
Copy pathDockerfile
File metadata and controls
47 lines (37 loc) · 1.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# Build Phase
FROM golang:1.26-alpine
ENV RESTIC_VERSION="0.19.1"
# Install the items
RUN apk add --no-cache ca-certificates wget gnupg git \
&& update-ca-certificates \
&& wget -qO /tmp/restic-${RESTIC_VERSION}.tar.gz "https://github.com/restic/restic/releases/download/v${RESTIC_VERSION}/restic-${RESTIC_VERSION}.tar.gz" \
&& cd /tmp \
&& tar -xf /tmp/restic-${RESTIC_VERSION}.tar.gz -C /tmp/ \
&& cd /tmp/restic-${RESTIC_VERSION} \
&& go run build.go \
&& mv restic /go/bin/restic \
&& rm -rf /tmp/restic*
# Release phase
FROM alpine
# Backup options
ENV RESTIC_BACKUP_OPTIONS=""
# Cleanup params
ENV RESTIC_CLEANUP_KEEP_DAILY=7
ENV RESTIC_CLEANUP_KEEP_WEEKLY=5
ENV RESTIC_CLEANUP_KEEP_MONTHLY=12
ENV RESTIC_CLEANUP_KEEP_YEARLY=75
ENV RESTIC_CLEANUP_OPTIONS="--prune"
# Default interval times can be set in cron expression
# Fire at 03:15 every day
ENV CRON_BACKUP_EXPRESSION="15 3 * * *"
# Fire at 00:15 on the first day of every month
ENV CRON_CLEANUP_EXPRESSION="15 0 0 * *"
# Script and config
COPY --from=0 /go/bin/restic /usr/local/bin/restic
ADD ./target/start_cron.sh /usr/local/bin
ADD ./target/supervisor_restic.ini /etc/supervisor.d/restic.ini
RUN apk add --no-cache ca-certificates fuse gnupg openssh-client supervisor && \
chmod +x /usr/local/bin/start_cron.sh && \
mkdir -p /var/log/supervisor
# Start the process
CMD [ "supervisord", "-c", "/etc/supervisord.conf" ]