File size: 3,157 Bytes
270fc4d
216c95a
9dfef84
db6f057
9dfef84
a7706fd
 
270fc4d
 
 
 
 
24806c6
270fc4d
 
 
5af3e86
270fc4d
 
 
 
 
216c95a
270fc4d
 
 
 
 
216c95a
270fc4d
 
 
 
 
 
216c95a
270fc4d
 
216c95a
270fc4d
 
 
 
216c95a
270fc4d
 
 
 
 
 
216c95a
270fc4d
 
 
216c95a
270fc4d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
216c95a
270fc4d
 
 
 
216c95a
270fc4d
 
216c95a
270fc4d
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/bin/bash


cp /app/LTX-Video/. /data/LTX-Video -rdfv

tree -L 6 /data

# ==============================================================================
# GERENCIAMENTO DE LOGS NA INICIALIZAÇÃO
# ==============================================================================
mkdir /data/logs
LOG_FILE="/data/logs/session.log"

# Verifica se o arquivo de log da sessão anterior existe e não está vazio
if [ -f "$LOG_FILE" ] && [ -s "$LOG_FILE" ]; then
    echo "[STARTUP] Log da sessão anterior encontrado. Preparando para upload."

    # Cria um nome de arquivo com timestamp para o upload
    TODAY=$(date +%Y-%m-%d)
    TIMESTAMP=$(date +%H-%M-%S)
    UPLOAD_FILENAME="log-${TIMESTAMP}.txt"
    export REPO_PATH="logs/${TODAY}/${UPLOAD_FILENAME}"

    # Move o log antigo para um local temporário para evitar que a aplicação comece a escrever nele
    TEMP_LOG_PATH="/data/previous_session.log"
    mv "$LOG_FILE" "$TEMP_LOG_PATH"
    
    echo "[STARTUP] Fazendo upload de '$TEMP_LOG_PATH' para o repositório em '$REPO_PATH'..."

    # Executa o script de upload do Python em segundo plano para não bloquear a inicialização
    # O token HF_TOKEN deve estar definido como uma variável de ambiente no seu contêiner
    python - <<'PY' &
import os
import time
from huggingface_hub import HfApi, HfFolder

# Adiciona uma pequena espera para garantir que a rede esteja pronta
time.sleep(5)

repo = os.environ.get("SELF_HF_REPO_ID", "eeuuia/Tmp")
token = os.getenv("HF_TOKEN")
log_to_upload = "/data/previous_session.log"
repo_path = os.getenv("REPO_PATH",'logs/log.log')

if not token:
    print("[UPLOAD_SCRIPT] AVISO: HF_TOKEN ausente; upload do log desabilitado.")
    # Limpa o arquivo temporário mesmo assim
    if os.path.exists(log_to_upload):
        os.remove(log_to_upload)
    exit()

if not repo_path:
    print("[UPLOAD_SCRIPT] ERRO: REPO_PATH não definido.")
    exit()

try:
    print(f"[UPLOAD_SCRIPT] Iniciando upload para {repo}...")
    api = HfApi(token=token)
    api.upload_file(
        path_or_fileobj=log_to_upload,
        path_in_repo=repo_path,
        repo_id=repo,
        repo_type="model",
    )
    print(f"[UPLOAD_SCRIPT] Upload de log concluído com sucesso para: {repo_path}")
finally:
    # Garante que o arquivo de log temporário seja sempre removido após a tentativa de upload
    if os.path.exists(log_to_upload):
        os.remove(log_to_upload)
        print("[UPLOAD_SCRIPT] Arquivo de log temporário limpo.")
PY
    
else
    echo "[STARTUP] Nenhum log da sessão anterior encontrado. Iniciando com um log limpo."
fi

# ==============================================================================
# INICIALIZAÇÃO DA APLICAÇÃO PRINCIPAL
# ==============================================================================
echo "[STARTUP] Iniciando a aplicação principal Gradio (app.py)..."

# Executa o setup.py primeiro para garantir que as dependências estão prontas
python /app/setup.py

# Inicia a aplicação Gradio
# O `exec` substitui o processo do shell pelo processo do python,
# o que é uma boa prática para scripts de inicialização de contêineres.
exec python /app/app.py