From 68ea87e1b2e5a3e1fd570976204ca317c2feaea5 Mon Sep 17 00:00:00 2001 From: stefanfeng Date: Wed, 19 Aug 2026 14:44:58 +0800 Subject: [PATCH] fix: persist avatar data and uploads --- digital-avatar-app/.gitignore | 2 ++ digital-avatar-app/backend/database.py | 5 +++-- digital-avatar-app/backend/routers/knowledge.py | 2 +- digital-avatar-app/docker-compose.yml | 8 ++++++++ 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/digital-avatar-app/.gitignore b/digital-avatar-app/.gitignore index 3b24e4a..30cb1c8 100644 --- a/digital-avatar-app/.gitignore +++ b/digital-avatar-app/.gitignore @@ -2,3 +2,5 @@ node_modules dist .env *.log +backend/avatar.db +backend/routers/uploads/ diff --git a/digital-avatar-app/backend/database.py b/digital-avatar-app/backend/database.py index 8e1f7b3..076e2f0 100644 --- a/digital-avatar-app/backend/database.py +++ b/digital-avatar-app/backend/database.py @@ -5,10 +5,11 @@ from sqlalchemy.orm import sessionmaker, declarative_base, Session BASE_DIR = os.path.dirname(os.path.abspath(__file__)) DB_FILE = os.path.join(BASE_DIR, "avatar.db") +DATABASE_URL = os.getenv("DATABASE_URL", f"sqlite:///{DB_FILE}") engine = create_engine( - f"sqlite:///{DB_FILE}", - connect_args={"check_same_thread": False}, + DATABASE_URL, + connect_args={"check_same_thread": False} if DATABASE_URL.startswith("sqlite:") else {}, ) SessionLocal = sessionmaker(bind=engine, autoflush=False, expire_on_commit=False) Base = declarative_base() diff --git a/digital-avatar-app/backend/routers/knowledge.py b/digital-avatar-app/backend/routers/knowledge.py index dbe7575..77b664e 100644 --- a/digital-avatar-app/backend/routers/knowledge.py +++ b/digital-avatar-app/backend/routers/knowledge.py @@ -15,7 +15,7 @@ import embeddings router = APIRouter() BASE_DIR = os.path.dirname(os.path.abspath(__file__)) -UPLOAD_DIR = os.path.join(BASE_DIR, "uploads") +UPLOAD_DIR = os.path.abspath(os.getenv("UPLOAD_DIR", os.path.join(BASE_DIR, "uploads"))) os.makedirs(UPLOAD_DIR, exist_ok=True) ALLOWED_EXT = {".md", ".txt", ".pdf", ".doc", ".docx", ".xlsx"} diff --git a/digital-avatar-app/docker-compose.yml b/digital-avatar-app/docker-compose.yml index ac7ebab..ee90f7b 100644 --- a/digital-avatar-app/docker-compose.yml +++ b/digital-avatar-app/docker-compose.yml @@ -7,6 +7,11 @@ services: restart: unless-stopped env_file: - .env + environment: + DATABASE_URL: sqlite:////data/avatar.db + UPLOAD_DIR: /data/uploads + volumes: + - avatar-data:/data expose: - "8000" ports: @@ -29,3 +34,6 @@ services: networks: avatar-net: driver: bridge + +volumes: + avatar-data: