63 lines
1.9 KiB
YAML
63 lines
1.9 KiB
YAML
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)
|
|
|
|
# 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
|