feat: add Docker deployment support and fix /users/me endpoint

- Add docker/ directory with Dockerfile for backend and frontend
- Backend: pytorch/pytorch CUDA base image with all qwen_tts deps
- Frontend: multi-stage nginx build with /api/ proxy to backend
- docker-compose.yml (CPU) + docker-compose.gpu.yml (GPU overlay)
- Fix /users/me returning 404 due to missing route (was caught by /{user_id})
- Update .gitignore to exclude docker/models, docker/data, docker/.env
- Update README and README.zh.md with Docker deployment instructions

Images: bdim404/qwen3-tts-backend, bdim404/qwen3-tts-frontend

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-06 15:15:27 +08:00
parent 964ebb824c
commit 38e00fd38c
13 changed files with 201 additions and 0 deletions

28
docker/docker-compose.yml Normal file
View File

@@ -0,0 +1,28 @@
services:
backend:
build:
context: ..
dockerfile: docker/backend/Dockerfile
environment:
SECRET_KEY: ${SECRET_KEY:?Set SECRET_KEY in docker/.env}
MODEL_DEVICE: ${MODEL_DEVICE:-cuda:0}
MODEL_BASE_PATH: /app/Qwen
DATABASE_URL: sqlite:////app/data/qwen_tts.db
CACHE_DIR: /app/voice_cache
OUTPUT_DIR: /app/outputs
volumes:
- ./models:/app/Qwen
- ./data/db:/app/data
- ./data/cache:/app/voice_cache
- ./data/outputs:/app/outputs
restart: unless-stopped
frontend:
build:
context: ..
dockerfile: docker/frontend/Dockerfile
ports:
- "80:80"
depends_on:
- backend
restart: unless-stopped