Test4 / start.sh
euiiiia's picture
Update start.sh
db6f057 verified
#!/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