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}