96 lines
3.3 KiB
YAML
96 lines
3.3 KiB
YAML
# ============================================================
|
|
# Docker Compose - S3 to Local Mirror + Web Dashboard (Multi-Sync)
|
|
# ============================================================
|
|
# Servizio che sincronizza MULTIPLE bucket S3-compatibili
|
|
# verso cartelle locali montate come volumi.
|
|
# Include una dashboard web in tempo reale con supporto tab.
|
|
#
|
|
# Uso:
|
|
# 1. Configurare il file .env con MULTIPLE bucket (SYNC_1, SYNC_2, etc.)
|
|
# 2. docker compose up -d
|
|
# 3. Aprire http://localhost:8080 per la dashboard con tab switcher
|
|
# 4. I file appariranno nei rispettivi mount point
|
|
#
|
|
# Formato .env per multiple sync:
|
|
# SYNC_CONFIGS='[
|
|
# {"id":"sync1", "bucket":"bucket-a", "local_path":"/data/local1", "interval":300},
|
|
# {"id":"sync2", "bucket":"bucket-b", "local_path":"/data/local2", "interval":600}
|
|
# ]'
|
|
# ============================================================
|
|
|
|
services:
|
|
s3-sync:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: s3-to-local-sync
|
|
restart: unless-stopped
|
|
|
|
# Variabili d'ambiente passate al container
|
|
environment:
|
|
# --- S3 (configurazione base, usata se SYNC_CONFIGS non è definito) ---
|
|
- S3_ENDPOINT=${S3_ENDPOINT}
|
|
- S3_ACCESS_KEY=${S3_ACCESS_KEY}
|
|
- S3_SECRET_KEY=${S3_SECRET_KEY}
|
|
- S3_BUCKET=${S3_BUCKET}
|
|
- S3_PATH_PREFIX=${S3_PATH_PREFIX:-}
|
|
- S3_REGION=${S3_REGION:-}
|
|
- S3_FORCE_PATH_STYLE=${S3_FORCE_PATH_STYLE:-true}
|
|
- S3_INSECURE_SSL=${S3_INSECURE_SSL:-false}
|
|
# --- Sync / Pianificazione ---
|
|
- SYNC_INTERVAL=${SYNC_INTERVAL:-300}
|
|
- SYNC_SCHEDULE=${SYNC_SCHEDULE:-}
|
|
- SYNC_ON_START=${SYNC_ON_START:-true}
|
|
- SYNC_MODE=${SYNC_MODE:-mirror}
|
|
- SYNC_TRANSFERS=${SYNC_TRANSFERS:-4}
|
|
- SYNC_BANDWIDTH=${SYNC_BANDWIDTH:-0}
|
|
- SYNC_LOG_LEVEL=${SYNC_LOG_LEVEL:-INFO}
|
|
# --- Notifiche Gotify ---
|
|
- GOTIFY_ENABLED=${GOTIFY_ENABLED:-false}
|
|
- GOTIFY_URL=${GOTIFY_URL:-}
|
|
- GOTIFY_TOKEN=${GOTIFY_TOKEN:-}
|
|
- GOTIFY_PRIORITY=${GOTIFY_PRIORITY:-5}
|
|
# --- Web Dashboard ---
|
|
- WEB_PORT=${WEB_PORT:-8080}
|
|
- STATE_DIR=/data/state
|
|
# --- Multi-Sync Configuration (opzionale, se speci ficato override S3_BUCKET) ---
|
|
- SYNC_CONFIGS=${SYNC_CONFIGS:-}
|
|
# --- Sistema ---
|
|
- PUID=${PUID:-1000}
|
|
- PGID=${PGID:-1000}
|
|
- TZ=${TZ:-Europe/Rome}
|
|
|
|
# Volumi:
|
|
# - Cartelle locali per sync multiple (default)
|
|
# - Cartella locale legacy per sync singola
|
|
# - Volume per lo stato interno (persistente tra i restart)
|
|
volumes:
|
|
- ${LOCAL_SYNC_PATH_1:-./data/sync1}:/data/local1
|
|
- ${LOCAL_SYNC_PATH_2:-./data/sync2}:/data/local2
|
|
- ${LOCAL_SYNC_PATH:-./data}:/data/local
|
|
- sync-state:/data/state
|
|
|
|
# Porta per la dashboard web
|
|
ports:
|
|
- "${WEB_PORT:-8080}:${WEB_PORT:-8080}"
|
|
|
|
# Healthcheck: verifica che sia il sync che il web server siano attivi
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pgrep -f sync.sh && wget -q --spider http://localhost:${WEB_PORT:-8080}/ || exit 1"]
|
|
interval: 60s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 30s
|
|
|
|
# Limiti risorse (opzionali, decommentare se necessario)
|
|
# deploy:
|
|
# resources:
|
|
# limits:
|
|
# memory: 256M
|
|
# cpus: "0.5"
|
|
|
|
# Volume per lo stato persistente della sync (storico, log, etc.)
|
|
volumes:
|
|
sync-state:
|
|
driver: local
|