- docker-compose.yml: backend + frontend 两服务,挂 NPM 所在外部网络、不暴露宿主端口; data/uploads 用 bind mount 持久化(deploy/ 下,gitignored) - backend/Dockerfile: python:3.12-slim + 清华 PyPI 镜像(ARG 可覆盖) - frontend/Dockerfile: 多阶段 node:22 + npm ci + next build(NEXT_PUBLIC_API_BASE 构建期 注入,npmmirror 默认)→ next start - .env.example: 全量部署环境变量模板(compose 替换变量 + 后端密钥) - deploy/README.md: 服务器部署手册(NPM 配置 / DNS / 数据迁移 / 运维 / 大陆网络) Co-Authored-By: Claude Code <noreply@anthropic.com>
50 lines
1.9 KiB
Bash
50 lines
1.9 KiB
Bash
# ===== BookMate 部署环境变量模板 =====
|
||
# 复制为仓库根目录的 `.env` 后填写(.env 已被 gitignore,不会提交)。
|
||
# 这个文件同时服务两件事:
|
||
# 1) docker compose 的 ${NEXT_PUBLIC_API_BASE} / ${NPM_NETWORK} 替换
|
||
# 2) backend 容器的 env_file(注入后端所有环境变量)
|
||
|
||
# —— compose 替换变量 ——
|
||
# 前端(浏览器端)调后端 API 的地址:改成你实际用的域名,必须是 https 且带 /api 后缀
|
||
#(NPM 里 location /api 反代到 backend)
|
||
NEXT_PUBLIC_API_BASE=https://bookmate.example.com/api
|
||
# 服务器上 nginx-proxy-manager 容器所在的 docker 网络名:
|
||
# 在服务器执行 `docker network ls` 查看,通常是 npm_default 或 nginx-proxy-manager_default
|
||
NPM_NETWORK=npm_default
|
||
|
||
# —— 后端运行与存储(容器内路径,由 docker-compose 卷挂载,一般不用改)——
|
||
DATABASE_URL=sqlite+aiosqlite:////app/data/bookmate.db
|
||
UPLOAD_DIR=/app/uploads
|
||
DATA_DIR=/app/data
|
||
API_HOST=0.0.0.0
|
||
API_PORT=8000
|
||
|
||
# 站点访问密码:部署必须设置!留空 = 任何人可访问
|
||
SITE_PASSWORD=
|
||
|
||
# ===== 模型 Provider(至少配一个;也可启动后在网页「管理模型」里添加)=====
|
||
DEEPSEEK_API_KEY=
|
||
DEEPSEEK_BASE_URL=https://api.deepseek.com/v1
|
||
DEEPSEEK_MODEL=deepseek-chat
|
||
|
||
OPENAI_API_KEY=
|
||
OPENAI_BASE_URL=https://api.openai.com/v1
|
||
OPENAI_MODEL=gpt-4o
|
||
|
||
ANTHROPIC_API_KEY=
|
||
ANTHROPIC_MODEL=claude-sonnet-4-20250514
|
||
|
||
OPENROUTER_API_KEY=
|
||
OPENROUTER_MODEL=openrouter/auto
|
||
|
||
# ===== 向量检索 & 重排(OpenAI 兼容 API,如硅基流动 / OpenRouter)=====
|
||
# embedding_base_url: 支持 OpenAI 兼容 /embeddings 的端点前缀
|
||
EMBEDDING_BASE_URL=https://api.siliconflow.cn/v1
|
||
EMBEDDING_API_KEY=
|
||
EMBEDDING_MODEL=BAAI/bge-m3
|
||
# rerank: 硅基流动使用 /v1/rerank,OpenAI 不提供;留空则跳过重排
|
||
RERANK_BASE_URL=https://api.siliconflow.cn/v1
|
||
RERANK_API_KEY=
|
||
RERANK_MODEL=BAAI/bge-reranker-v2-m3
|
||
EMBEDDING_BATCH_SIZE=64
|