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>
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
services:
|
||||
backend:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: backend/Dockerfile
|
||||
# 后端全部环境变量(含密钥)从根目录 .env 注入;pydantic 会忽略额外键
|
||||
env_file: ./.env
|
||||
volumes:
|
||||
- ./deploy/data:/app/data # SQLite 数据库(迁移时把本机 backend/data 拷到这里)
|
||||
- ./deploy/uploads:/app/uploads # EPUB 原文件
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- bookmate
|
||||
- npm-proxy
|
||||
|
||||
frontend:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: frontend/Dockerfile
|
||||
args:
|
||||
# 构建期内联到浏览器代码;务必改成你实际使用的域名(带 /api 后缀)
|
||||
NEXT_PUBLIC_API_BASE: ${NEXT_PUBLIC_API_BASE:-https://bookmate.example.com/api}
|
||||
depends_on:
|
||||
- backend
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- bookmate
|
||||
- npm-proxy
|
||||
|
||||
networks:
|
||||
bookmate: {} # 两服务互通(backend 内部调用,无宿主端口)
|
||||
npm-proxy:
|
||||
external: true
|
||||
# 服务器上 nginx-proxy-manager 容器所在网络名,用 `docker network ls` 查到后填到 .env 的 NPM_NETWORK
|
||||
name: ${NPM_NETWORK:-npm_default}
|
||||
Reference in New Issue
Block a user