++ Primo Caricamento
This commit is contained in:
49
entrypoint.sh
Normal file
49
entrypoint.sh
Normal file
@@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env bash
|
||||
# ============================================================
|
||||
# entrypoint.sh - Avvia sia il web server che lo script di sync
|
||||
# ============================================================
|
||||
# Gestisce i due processi:
|
||||
# 1. Flask web dashboard (background)
|
||||
# 2. Script di sincronizzazione rclone (foreground)
|
||||
#
|
||||
# Lo shutdown pulito viene propagato a entrambi i processi.
|
||||
# ============================================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# --- Crea directory condivise ---
|
||||
mkdir -p /data/state /data/local
|
||||
|
||||
# --- Porta web (configurabile) ---
|
||||
WEB_PORT="${WEB_PORT:-8080}"
|
||||
|
||||
echo "[ENTRYPOINT] Avvio dashboard web su porta ${WEB_PORT}..."
|
||||
|
||||
# Avvia il web server Flask in background
|
||||
# - Usa python3 -u per output unbuffered (log immediati)
|
||||
python3 -u /app/web/app.py &
|
||||
WEB_PID=$!
|
||||
|
||||
echo "[ENTRYPOINT] Dashboard avviata (PID: ${WEB_PID})"
|
||||
echo "[ENTRYPOINT] Avvio sincronizzazione..."
|
||||
|
||||
# --- Gestione shutdown: termina entrambi i processi ---
|
||||
cleanup() {
|
||||
echo "[ENTRYPOINT] Arresto in corso..."
|
||||
# Invia SIGTERM al web server
|
||||
kill "${WEB_PID}" 2>/dev/null || true
|
||||
wait "${WEB_PID}" 2>/dev/null || true
|
||||
echo "[ENTRYPOINT] Arresto completato."
|
||||
}
|
||||
trap cleanup SIGTERM SIGINT
|
||||
|
||||
# Avvia lo script di sync in foreground
|
||||
# Questo è il processo principale: se termina, il container si ferma
|
||||
/usr/local/bin/sync.sh &
|
||||
SYNC_PID=$!
|
||||
|
||||
# Attendi che uno dei due processi termini
|
||||
wait -n "${WEB_PID}" "${SYNC_PID}" 2>/dev/null || true
|
||||
|
||||
# Se siamo qui, un processo è terminato: ferma l'altro
|
||||
cleanup
|
||||
Reference in New Issue
Block a user