File size: 2,241 Bytes
b994b10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
891dd4c
 
 
 
 
 
 
 
 
 
 
b994b10
 
 
 
 
 
 
 
 
 
 
 
 
 
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
#!/bin/bash
# init_pg.sh — Inicia PostgreSQL + restaura backup + sobe app FastAPI com 2 workers

set -e

echo "🔧 [INIT] Iniciando PostgreSQL..."

# ✅ Cria diretório persistente se não existir
mkdir -p /data/pgdata
chown -R postgres:postgres /data/pgdata 2>/dev/null || true
chmod 700 /data/pgdata

# Verifica se PostgreSQL já inicializado (dados persistidos)
if [ ! -f "$PGDATA/PG_VERSION" ]; then
    echo "📦 [INIT] Primeira execução — inicializando PostgreSQL..."
    su - postgres -c "initdb -D $PGDATA" 2>/dev/null || true
fi

su - postgres -c "pg_ctl -D $PGDATA start" 2>/dev/null || pg_ctlcluster 15 main start 2>/dev/null || service postgresql start

for i in $(seq 1 30); do
    if pg_isready -q 2>/dev/null; then
        echo "✅ [INIT] PostgreSQL pronto"
        break
    fi
    sleep 1
done

su - postgres -c "psql -tc \"SELECT 1 FROM pg_roles WHERE rolname='akira'\" | grep -q 1" || \
    su - postgres -c "psql -c \"CREATE USER akira WITH PASSWORD 'akira' SUPERUSER;\""

su - postgres -c "psql -tc \"SELECT 1 FROM pg_database WHERE datname='akira'\" | grep -q 1" || \
    su - postgres -c "psql -c \"CREATE DATABASE akira OWNER akira;\""

# Historico de conversas: sem Persistent Storage, o /data/pgdata morre em cada
# deploy — so o dump no dataset HF sobrevive. Tenta baixar o ultimo antes de
# subir a app (dentro de pg_backup.sh so restaura se a BD estiver vazia).
echo "[INIT] A restaurar historico (dataset HF -> PostgreSQL)..."
bash /akira/scripts/pg_backup.sh restore-from-hf || true

# Loop de backup periodico (dump local + upload para o dataset HF).
# Antes este script existia mas NUNCA era lancado => nenhum backup era feito.
echo "[INIT] A iniciar backup periodico..."
mkdir -p /akira/data/cloud_sync
nohup bash /akira/scripts/pg_backup.sh >> /akira/data/cloud_sync/backup.log 2>&1 &

echo "🚀 [INIT] Iniciando Training Worker em background..."
python /akira/treinamento_worker.py &
TRAINING_PID=$!
trap "kill $TRAINING_PID 2>/dev/null" EXIT

echo "🚀 [INIT] Iniciando Akira FastAPI com 2 workers..."

exec uvicorn main:app \
    --host 0.0.0.0 \
    --port 7860 \
    --workers 2 \
    --timeout-keep-alive 30 \
    --limit-concurrency 200