#!/bin/bash today=$(date +'%F') volumesdir="/var/lib/docker/volumes" stackdir="/etc/komodo/stacks" backupdir="/backups" # Add services here to stop and backup. services=( "$stackdir/caddy_housh_dev" ) # Add volumes here to backup. volumes=( "$volumesdir" ) function stopServices() { echo "Stopping services..." for service in "${services[@]}"; do cd "$service" && docker compose stop done } function startServices() { echo "Restarting services..." for service in "${services[@]}"; do cd "$service" && docker compose up -d done } function copyStacks() { echo "Copying stack configuration..." local dir="$1/stacks" mkdir "$dir" for service in "${services[@]}"; do cp -R "$service" "$dir" done } function copyVolumes() { echo "Copying volumes..." local dir="$1/volumes" mkdir "$dir" for volume in "${volumes[@]}"; do cp -R "$volume" "$dir" done } function backup() { echo "Creating backup..." tar -cvf "/tmp/$today.tar" "$temp" gzip "/tmp/$today.tar" cp -R "/tmp/$today.tar.gz" "$backupdir" # Cleanup temporary files. rm -rf "$temp" "/tmp/$today.tar" "/tmp/$today.tar.gz" } function main() { # stop services. stopServices # Create a temporary directory. local temp="/tmp/$today" mkdir "$temp" # copy stack configuration. copyStacks "$temp" # Create a tar to backup. backup # Restart services. startServices } main "$@"