From 0737bedb994e7c6cc99390d77ebe4d8145b0214d Mon Sep 17 00:00:00 2001 From: Ismail D <22240843+Ismaaa@users.noreply.github.com> Date: Sun, 25 Dec 2022 01:49:30 +0100 Subject: [PATCH] Feat/add local volumes backup (#821) * Add Backup Docker Volumes Locally * Update naming --- public/v4/apps/offen-local-docker-backup.yml | 51 ++++++++++++++++++ public/v4/logos/offen-local-docker-backup.png | Bin 0 -> 4117 bytes 2 files changed, 51 insertions(+) create mode 100644 public/v4/apps/offen-local-docker-backup.yml create mode 100644 public/v4/logos/offen-local-docker-backup.png diff --git a/public/v4/apps/offen-local-docker-backup.yml b/public/v4/apps/offen-local-docker-backup.yml new file mode 100644 index 0000000..cf83dd5 --- /dev/null +++ b/public/v4/apps/offen-local-docker-backup.yml @@ -0,0 +1,51 @@ +captainVersion: 4 +services: + $$cap_appname: + image: offen/docker-volume-backup:$$cap_version + environment: + BACKUP_FILENAME: $$cap_backup_filename + BACKUP_ARCHIVE: /archive + BACKUP_CRON_EXPRESSION: $$cap_backup_cron_expression + BACKUP_RETENTION_DAYS: $$cap_backup_retention_days + volumes: + - $$cap_volume_to_backup:/backup/data + - $$cap_backup_path:/archive + restart: always + caproverExtra: + notExposeAsWebApp: 'true' +caproverOneClickApp: + variables: + - id: $$cap_version + label: Docker volume backup version + defaultValue: 'v2' + description: Check out their Docker page for the valid tags https://hub.docker.com/r/offen/docker-volume-backup/tags + validRegex: /^([^\s^\/])+$/ + - id: $$cap_volume_to_backup + label: Volume to backup + description: Path of the volume that you want to backup, e.g. `/var/lib/docker/volumes/captain--my-app/_data` + - id: $$cap_backup_path + label: Backup path + defaultValue: '/backups' + description: Path where you want to store the backups + - id: $$cap_backup_filename + label: Backup filename + defaultValue: 'backup-%Y-%m-%dT%H-%M-%S.tar.gz' + description: The name of the backup file including the `.tar.gz` extension. Format verbs will be replaced as in `strftime`. Omitting them will result in the same filename for every backup run, which means previous versions will be overwritten on subsequent runs. The default results in filenames like `backup-2021-08-29T04-00-00.tar.gz`. + - id: $$cap_backup_cron_expression + label: Cron expression + defaultValue: '@daily' + description: Backups run on the given cron schedule in `busybox` flavor. If no value is set, `@daily` will be used. If you do not want the cron to ever run, use `0 0 5 31 2 ?`. + - id: $$cap_backup_retention_days + label: Backup retention days + defaultValue: '14' + description: Define this value to enable automatic rotation of old backups. The value declares the number of days for which a backup is kept. + instructions: + start: >- + Backup Docker volumes locally. See https://github.com/offen/docker-volume-backup. + end: >- + Aaaand you're done! 😄 + Your service is up and running + displayName: Docker volume backup + isOfficial: true + description: Backup Docker volumes locally + documentation: Taken from https://github.com/offen/docker-volume-backup diff --git a/public/v4/logos/offen-local-docker-backup.png b/public/v4/logos/offen-local-docker-backup.png new file mode 100644 index 0000000000000000000000000000000000000000..ed3d5aae062a6d3274c2cf1740a12db487b7b75d GIT binary patch literal 4117 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