feat: add restic (#1044)

* feat: add restic

allows incremental snapshot backups
remove custom push-backup script

* ci: remove .git dir to skip fetch_details_from_tag

fixes https://github.com/frappe/frappe_docker/actions/runs/3938883301/jobs/6738091655
This commit is contained in:
Revant Nandgaonkar
2023-01-18 11:31:18 +05:30
committed by GitHub
parent 44df16fd04
commit bb1e4bb341
8 changed files with 41 additions and 247 deletions

View File

@@ -5,40 +5,34 @@ Create backup service or stack.
version: "3.7"
services:
backup:
image: frappe/erpnext:v14
image: frappe/erpnext:${VERSION}
entrypoint: ["bash", "-c"]
command: |
for SITE in $(/home/frappe/frappe-bench/env/bin/python -c "import frappe;print(' '.join(frappe.utils.get_sites()))")
do
bench --site $SITE backup --with-files
push-backup \
--site $SITE \
--bucket $BUCKET_NAME \
--region-name $REGION \
--endpoint-url $ENDPOINT_URL \
--aws-access-key-id $ACCESS_KEY_ID \
--aws-secret-access-key $SECRET_ACCESS_KEY
done
command:
- |
bench backup-all-sites
## Uncomment following to snapshot sites
# restic snapshots || restic init
# restic backup sites
environment:
- BUCKET_NAME=erpnext
- REGION=us-east-1
- ACCESS_KEY_ID=RANDOMACCESSKEY
- SECRET_ACCESS_KEY=RANDOMSECRETKEY
- ENDPOINT_URL=https://endpoint.url
# Set correct environment variables for restic
- RESTIC_REPOSITORY=s3:https://s3.endpoint.com/restic
- AWS_ACCESS_KEY_ID=access_key
- AWS_SECRET_ACCESS_KEY=secret_access_key
- RESTIC_PASSWORD=restic_password
volumes:
- "sites-vol:/home/frappe/frappe-bench/sites"
- "sites:/home/frappe/frappe-bench/sites"
networks:
- erpnext-network
networks:
erpnext-network:
external: true
name: <your_frappe_docker_project_name>_default
name: ${PROJECT_NAME:-erpnext}_default
volumes:
sites-vol:
sites:
external: true
name: <your_frappe_docker_project_name>_sites-vol
name: ${PROJECT_NAME:-erpnext}_sites
```
In case of single docker host setup, add crontab entry for backup every 6 hours.
@@ -47,6 +41,13 @@ In case of single docker host setup, add crontab entry for backup every 6 hours.
0 */6 * * * /usr/local/bin/docker-compose -f /path/to/backup-job.yml up -d > /dev/null
```
Or
```
0 */6 * * * docker compose -p erpnext exec backend bench backup-all-sites > /dev/null
```
Notes:
- Change the cron string as per need.
- In case of docker compose exec set the correct project name