version: '3.8' # Maintenance Runner - Scheduled Tasks & Scripts # Purpose: Centralized container for running maintenance tasks (backups, cleanup, health checks, etc.) # Ports: None (background service) # GPU: No # Storage: Read access to Docker data, write to backup location services: maintenance: image: alpine:latest container_name: maintenance restart: unless-stopped volumes: # Docker configs to backup (read-only) - /home/jpmschweitzer/docker-data:/data/docker-data:ro # Host-based service configs to backup (read-only) - /home/jpmschweitzer/.config/code-server:/data/code-server-config:ro # Backup destination (read-write) - /mnt/media/backups:/backups # Maintenance scripts - /home/jpmschweitzer/docker-data/maintenance/scripts:/scripts:ro # Crontab configuration - /home/jpmschweitzer/docker-data/maintenance/crontab:/etc/crontabs/root:ro # Logs - /home/jpmschweitzer/docker-data/maintenance/logs:/var/log/maintenance # Docker socket for container management (read-only) - /var/run/docker.sock:/var/run/docker.sock:ro environment: - TZ=Europe/Amsterdam command: > sh -c " apk add --no-cache docker-cli && crond -f -l 2 " # crond flags: # -f: foreground (don't daemonize) # -l 2: log level 2 (errors and info) networks: - docker-dataplane networks: docker-dataplane: external: true name: docker-dataplane # Usage: # 1. Create maintenance scripts in ~/docker-data/maintenance/scripts/ # 2. Define schedule in ~/docker-data/maintenance/crontab # 3. Container will execute scripts per schedule # # Adding new maintenance tasks: # 1. Create new script in scripts/ directory # 2. Make it executable: chmod +x script-name.sh # 3. Add to crontab with desired schedule # 4. Restart container: docker restart maintenance # # View logs: # - Cron logs: docker logs maintenance # - Task logs: ~/docker-data/maintenance/logs/ # # Manual task execution: # docker exec maintenance /scripts/backup-configs.sh