File size: 3,096 Bytes
1d458ad
216c95a
1d458ad
 
 
 
 
24806c6
1d458ad
 
 
5af3e86
1d458ad
 
 
 
 
216c95a
1d458ad
 
 
 
 
216c95a
1d458ad
 
 
 
 
 
216c95a
1d458ad
 
216c95a
1d458ad
 
 
 
216c95a
1d458ad
 
 
 
 
 
216c95a
1d458ad
 
 
216c95a
1d458ad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
216c95a
1d458ad
 
 
 
216c95a
1d458ad
 
216c95a
1d458ad
 
 
 
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
#!/bin/bash

# ==============================================================================
# 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