start:
docker compose -f oci://docker.io/33331111/question-memorization-app:1.1.2 up -d
env:
# =============================================================================
# Question-Mem-App 环境变量示例
# 复制为 .env 并按需修改。所有变量名与 app/core/config.py 中的字段一一对应
# (pydantic-settings 不区分大小写,但约定使用大写)。
# =============================================================================
# ---- Database ----
DATABASE_URL=postgresql+asyncpg://question_mem:question_mem_pass@postgres:5432/question_mem
DATABASE_URL_SYNC=postgresql://question_mem:question_mem_pass@postgres:5432/question_mem
# ---- Redis ----
REDIS_URL=redis://redis:6379/0
# ---- MinIO / 文件存储 ----
MINIO_ENDPOINT=minio:9000
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin
MINIO_BUCKET=question-mem
MINIO_SECURE=False
# 存储模式:minio(默认)或 local(本地文件系统,开发免装 MinIO)
STORAGE_MODE=minio
# ---- JWT 鉴权 ----
# 生成命令:openssl rand -base64 32
JWT_SECRET=d2f1e8a0b7c94e6f8a1b2c3d4e5f60718293a4b5c6d7e8f9a0b1c2d3e4f5a6b7c
JWT_ALGORITHM=HS256
JWT_ACCESS_EXPIRE_MINUTES=360
JWT_REFRESH_EXPIRE_DAYS=7
# ---- AES-256-GCM 主密钥(用于加密用户的 LLM API Key)----
# MUST be a base64-encoded 32-byte string (256 bits).
# 生成命令:openssl rand -base64 32
# Do NOT use weak passphrases — the app will refuse to start with a malformed key.
AES_MASTER_KEY=Zn/bUBscnx99kutK3PWfpYPc0N7QBoBickSNljCwbb0=
# ---- OCR ----
# PDF 页面提取的文本字符数低于此阈值时,渲染为图片走 OCR
OCR_TEXT_THRESHOLD=50
# ---- Ollama 本地大模型 ----
OLLAMA_BASE_URL=http://host.docker.internal:11434
# ---- LLM 调用调优(解析 worker)----
# 单次 LLM 结构化调用的超时时间(秒),防止某次调用挂起阻塞整个解析流程
LLM_CALL_TIMEOUT=180
# 瞬态错误(超时/网络/限流)的最大重试次数,每次重试使用指数退避(2^attempt 秒)
LLM_MAX_RETRIES=2
# ---- Phase 6: RBAC & 公共题库 ----
# 首次注册此邮箱的用户自动设为 admin;留空则首个注册用户自动 admin
INITIAL_ADMIN_EMAIL=
# 公共题库功能开关:False 时不注册 /api/public-banks 路由
ENABLE_PUBLIC_BANKS=True