Files changed (1) hide show
  1. entrypoint.sh +38 -51
entrypoint.sh CHANGED
@@ -7,74 +7,61 @@ set -euo pipefail
7
  export DB_DIR="/app/data"
8
  export REPO_ID="${REPO_ID:-alpgul/omniroute-storage}"
9
  export HF_HOME="/tmp/.cache/huggingface"
10
-
11
- # SQLite Üçlüsü: Ana dosya + Paylaşılan Bellek + Yazma Günlüğü
12
- FILES=("storage.sqlite" "storage.sqlite-shm" "storage.sqlite-wal")
13
  # ===========================================================
14
 
15
- echo "[$(date +'%T')] --- OmniRoute /app/data Üçlü Yedekleme ---"
16
 
17
  # 1. Dizin Kontrolü
18
  mkdir -p "$DB_DIR"
19
 
20
- # 2. HF Login Denetimi
21
  if [[ -z "${HF_TOKEN:-}" ]]; then
22
  echo "[HATA] HF_TOKEN eksik! Settings > Secrets kısmından ekleyin."
23
  exit 1
24
  fi
25
 
26
- echo "[Auth] Giriş yapılıyor..."
27
- hf auth login --token "$HF_TOKEN" &> /dev/null
28
-
29
- # 3. Restore (3 Dosyayı da Hub'dan İndir)
30
  echo "[Restore] Hub'dan dosyalar kontrol ediliyor..."
31
- for FILE in "${FILES[@]}"; do
32
- python3 -c "
33
  from huggingface_hub import hf_hub_download
34
- try:
35
- hf_hub_download(repo_id='$REPO_ID', filename='$FILE', repo_type='dataset', local_dir='$DB_DIR')
36
- print('√ $FILE yüklendi.')
37
- except:
38
- pass
 
 
 
 
 
 
 
 
 
39
  " || true
40
- done
41
 
42
- # 4. Arka Plan Senkronizasyonu (Test için 5 Saniye)
43
- (
44
- LAST_COMBINED_HASH=""
 
 
 
 
 
 
 
 
 
 
 
 
45
 
46
- while true; do
47
- sleep 60
48
- CURRENT_COMBINED_HASH=""
49
-
50
- # Dosyaların durumunu kontrol et ve birleşik hash oluştur
51
- for FILE in "${FILES[@]}"; do
52
- FILE_PATH="${DB_DIR}/${FILE}"
53
- if [[ -f "$FILE_PATH" ]]; then
54
- FILE_HASH=$(md5sum "$FILE_PATH" | cut -d' ' -f1)
55
- CURRENT_COMBINED_HASH+="${FILE_HASH}"
56
- fi
57
- done
58
 
59
- # Değişiklik varsa toplu yükleme yap
60
- if [[ -n "$CURRENT_COMBINED_HASH" && "$CURRENT_COMBINED_HASH" != "$LAST_COMBINED_HASH" ]]; then
61
- echo "[Sync] Veri değişikliği algılandı, Hub güncelleniyor..."
62
-
63
- for FILE in "${FILES[@]}"; do
64
- FILE_PATH="${DB_DIR}/${FILE}"
65
- if [[ -f "$FILE_PATH" ]]; then
66
- # Hata mesajlarını görmek için 2>/dev/null'u kaldırdık
67
- python3 -c "from huggingface_hub import HfApi; HfApi().upload_file(path_or_fileobj='$FILE_PATH', path_in_repo='$FILE', repo_id='$REPO_ID', repo_type='dataset', commit_message='WAL Sync: $FILE')" || echo "! $FILE yüklenemedi."
68
- fi
69
- done
70
-
71
- LAST_COMBINED_HASH="$CURRENT_COMBINED_HASH"
72
- echo "[Sync] Başarılı: $(date +'%T')"
73
- fi
74
- done
75
- ) &
76
 
77
  # 5. Uygulamayı Başlat
78
  echo "[System] OmniRoute başlatılıyor (/app/data)..."
79
- # İmajın kendi yapılandırmasına güveniyoruz, DATABASE_URL'i ezmiyoruz.
80
- exec node run-standalone.mjs
 
7
  export DB_DIR="/app/data"
8
  export REPO_ID="${REPO_ID:-alpgul/omniroute-storage}"
9
  export HF_HOME="/tmp/.cache/huggingface"
 
 
 
10
  # ===========================================================
11
 
12
+ echo "[$(date +'%T')] --- OmniRoute /app/data Yedekleme ---"
13
 
14
  # 1. Dizin Kontrolü
15
  mkdir -p "$DB_DIR"
16
 
17
+ # 2. HF Token Denetimi
18
  if [[ -z "${HF_TOKEN:-}" ]]; then
19
  echo "[HATA] HF_TOKEN eksik! Settings > Secrets kısmından ekleyin."
20
  exit 1
21
  fi
22
 
23
+ # 3. Restore (Dosyaları Hub'dan İndir)
 
 
 
24
  echo "[Restore] Hub'dan dosyalar kontrol ediliyor..."
25
+ python3 -c "
 
26
  from huggingface_hub import hf_hub_download
27
+
28
+ files = ['storage.sqlite', 'storage.sqlite-shm', 'storage.sqlite-wal']
29
+ for f in files:
30
+ try:
31
+ hf_hub_download(
32
+ repo_id='${REPO_ID}',
33
+ filename=f,
34
+ repo_type='dataset',
35
+ local_dir='${DB_DIR}',
36
+ token='${HF_TOKEN}'
37
+ )
38
+ print(f'√ {f} indirildi.')
39
+ except Exception as e:
40
+ print(f'- {f} bulunamadı, atlanıyor.')
41
  " || true
 
42
 
43
+ # 4. CommitScheduler ile Arka Plan Senkronizasyonu
44
+ echo "[Scheduler] Otomatik senkronizasyon başlatılıyor..."
45
+ python3 -c "
46
+ import time
47
+ from huggingface_hub import CommitScheduler
48
+
49
+ scheduler = CommitScheduler(
50
+ repo_id='${REPO_ID}',
51
+ repo_type='dataset',
52
+ folder_path='${DB_DIR}',
53
+ allow_patterns=['*.sqlite', '*.sqlite-shm', '*.sqlite-wal'],
54
+ every=5,
55
+ squash_history=True,
56
+ token='${HF_TOKEN}',
57
+ )
58
 
59
+ print('[Scheduler] Aktif: her 5 dakikada bir sync, squash_history=True')
 
 
 
 
 
 
 
 
 
 
 
60
 
61
+ while True:
62
+ time.sleep(60)
63
+ " &
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
 
65
  # 5. Uygulamayı Başlat
66
  echo "[System] OmniRoute başlatılıyor (/app/data)..."
67
+ node run-standalone.mjs