Files
gavindiazandClaude Code f63c0c55c9 feat: Docker 化部署(nginx-proxy-manager 反代,单域名 /api 路由)
- 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>
2026-10-25 15:35:20 +08:00

50 lines
1.9 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ===== 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