#!/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