diff --git a/photo/docker-compose.yml b/photo/docker-compose.yml index 54e2db6..05687ac 100644 --- a/photo/docker-compose.yml +++ b/photo/docker-compose.yml @@ -5,6 +5,20 @@ x-traefik-enable-labels: &traefik-labels traefik.swarm.network: "traefik" traefik.constraint-label: "traefik" +x-cron-deploy: &cron-deploy + mode: replicated + replicas: 0 + update_config: + parallelism: 1 + delay: 5s + order: stop-first + failure_action: rollback + rollback_config: + order: stop-first + restart_policy: + condition: none + + x-api-deploy: &api-deployment mode: replicated update_config: @@ -108,6 +122,41 @@ services: replicas: 1 <<: *api-deployment + rclone-sync: + image: rclone/rclone:latest + entrypoint: "" + command: /bin/sh -c 'rclone sync /data GDrive:Backups/immich/full_backup --backup-dir=GDrive:Backups/immich/archive/$(date +%Y-%m-%d) --progress' + volumes: + - data:/data:ro + secrets: + - source: rclone-config + target: /config/rclone/rclone.conf + environment: + - TZ=Europe/Budapest + deploy: + <<: *cron-deploy + labels: + swarm.cronjob.enable: "false" + swarm.cronjob.skip-running: "true" + swarm.cronjob.schedule: "0 2 * * *" + + rclone-cleanup: + image: rclone/rclone:latest + command: delete GDrive:Backups/immich/archive --min-age 60d --rmdirs --progress --dry-run + volumes: + - data:/data:ro + secrets: + - source: rclone-config + target: /config/rclone/rclone.conf + environment: + - TZ=Europe/Budapest + deploy: + <<: *cron-deploy + labels: + swarm.cronjob.enable: "false" + swarm.cronjob.skip-running: "true" + swarm.cronjob.schedule: "0 4 * * *" + networks: local: @@ -155,4 +204,7 @@ secrets: db_password: name: postgres-password external: true + rclone-config: + name: google-drive-rclone-config + external: true