diff --git a/README.md b/README.md index 7b4b2ac..09177f9 100644 --- a/README.md +++ b/README.md @@ -91,6 +91,12 @@ app/ * `-p 8000:8000`: 将容器的 8000 端口映射到主机的 8000 端口。 * `--env-file .env`: 使用 `.env` 文件设置环境变量。 + > 注意:如果使用 SQLite 数据库,需要挂载数据卷以持久化数据: + > ```bash + > docker run -d -p 8000:8000 --env-file .env -v /path/to/data:/app/data gemini-balance + > ``` + > 其中 `/path/to/data` 是主机上的数据存储路径,`/app/data` 是容器内的数据目录。 + #### b) 用现有的docker镜像部署 1. **拉取镜像**: @@ -109,6 +115,12 @@ app/ * `-p 8000:8000`: 将容器的 8000 端口映射到主机的 8000 端口 (根据需要调整)。 * `--env-file .env`: 使用 `.env` 文件设置环境变量 (确保 `.env` 文件存在于执行命令的目录)。 + > 注意:如果使用 SQLite 数据库,需要挂载数据卷以持久化数据: + > ```bash + > docker run -d -p 8000:8000 --env-file .env -v /path/to/data:/app/data ghcr.io/snailyp/gemini-balance:latest + > ``` + > 其中 `/path/to/data` 是主机上的数据存储路径,`/app/data` 是容器内的数据目录。 + ### 本地运行 (适用于开发和测试) 如果您想在本地直接运行源代码进行开发或测试,请按照以下步骤操作: diff --git a/app/database/connection.py b/app/database/connection.py index a434eb2..78cd874 100644 --- a/app/database/connection.py +++ b/app/database/connection.py @@ -1,6 +1,7 @@ """ 数据库连接池模块 """ +from pathlib import Path from databases import Database from sqlalchemy import create_engine, MetaData # from sqlalchemy.orm import sessionmaker # 不再需要 @@ -13,7 +14,11 @@ logger = get_database_logger() # 数据库URL if settings.DATABASE_TYPE == "sqlite": - DATABASE_URL = f"sqlite:///{settings.SQLITE_DATABASE}" + # 确保 data 目录存在 + data_dir = Path("data") + data_dir.mkdir(exist_ok=True) + db_path = data_dir / settings.SQLITE_DATABASE + DATABASE_URL = f"sqlite:///{db_path}" elif settings.DATABASE_TYPE == "mysql": if settings.MYSQL_SOCKET: DATABASE_URL = f"mysql+pymysql://{settings.MYSQL_USER}:{settings.MYSQL_PASSWORD}@/{settings.MYSQL_DATABASE}?unix_socket={settings.MYSQL_SOCKET}"