Skip to content

Latest commit

 

History

History
110 lines (80 loc) · 3.46 KB

README.md

File metadata and controls

110 lines (80 loc) · 3.46 KB

PRINTFILM 部署(Docker 只跑库与缓存)

开源仓库以根目录 README.md 的 Docker 全栈为准。
现网机器发布手册 docs/DEPLOY.md、发版记录 docs/releases/ 仅本机保留,不上库。
本文仅描述 Postgres/Redis compose 与本机跑 API 的补充说明。不要用 OSS 上传前端 dist 代替站点发布。

分工

组件 运行方式
PostgreSQL Docker
Redis Docker
FastAPI / Celery worker 宿主机 Python 进程
前端 / 管理后台 宿主机 npm run build + nginx 静态托管

1. 启动中间件(独立目录,不复用其它项目的库)

cp deploy/.env.prod.example deploy/.env.prod   # 改密码;默认端口 15432 / 16379
docker compose -f deploy/docker-compose.yml --env-file deploy/.env.prod up -d
docker compose -f deploy/docker-compose.yml ps

容器名:ai-movie-pg、ai-movie-redis。与 kepu(5432/6379)隔离。

Postgres / Redis 端口均映射为 0.0.0.0(便于本机直连调试)。公网暴露有风险,仅受控调试时使用,并确认强密码与云安全组。常规发布默认不执行 docker compose(见 SETUP_INFRA=1)。

2. 配置应用

将 deploy/.env.prod 中的 DATABASE_URL / REDIS_URL / ARK_* 等写入 backend/.env(密码与 compose 一致)。

正式环境示例:

DATABASE_URL=postgresql+asyncpg://printfilm:<密码>@127.0.0.1:5432/printfilm
DATABASE_URL_SYNC=postgresql+psycopg2://printfilm:<密码>@127.0.0.1:5432/printfilm
REDIS_URL=redis://127.0.0.1:6379/0
USE_CELERY=true

需本机已安装:Python 3.12、FFmpeg(PATH)、Node.js。

中文字幕字体(必装):科普成片用 FFmpeg drawtext 烧录叠字/口播字幕。Ubuntu 示例:

sudo apt-get install -y fonts-wqy-zenhei fonts-wqy-microhei fontconfig
# 可选:写入 backend/.env
# FRAMECUT_FONT=/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc

缺字体时字幕会显示为「方框」(□),需装字体后重新合成该项目成片。

3. 启动 API + Worker

cd backend
python -m venv .venv
# Windows: .\.venv\Scripts\activate
# Linux:  source .venv/bin/activate
pip install -r requirements.txt

uvicorn app.main:app --host 0.0.0.0 --port 8000

4. 前端

cd frontend
npm install
npm run dev          # 开发
# npm run build && npx serve dist   # 简单静态托管

运维

# 看中间件日志
docker compose -f deploy/docker-compose.yml --env-file deploy/.env.prod logs -f

# 停中间件(不删数据)
docker compose -f deploy/docker-compose.yml --env-file deploy/.env.prod down

# 停并删卷(清库/清 Redis)
docker compose -f deploy/docker-compose.yml --env-file deploy/.env.prod down -v

任务并发:通过 backend/.env 中的 TASK_RUNTIME_MAX_CONCURRENCY、TASK_USER_MAX_CONCURRENCY 调整统一任务平台并发。

OSS(成片 / 分镜 / 前端)

在 backend/.env 开启:

OSS_ENABLED=true
OSS_ENDPOINT=oss-cn-beijing.aliyuncs.com
OSS_BUCKET=your-bucket
OSS_FOLDER=kepu
OSS_ACCESS_KEY_ID=...
OSS_ACCESS_KEY_SECRET=...
  • 分镜图/视频/配音/成片:本地落盘供 FFmpeg,上传后 DB 存 OSS 公网 URL(前端预览走 OSS)
  • 对象前缀:kepu/generated/p{id}/...
  • 前端构建产物上传:
cd frontend && npm run build
cd ../backend && .venv/bin/python ../deploy/scripts/upload_oss_web.py
# → https://{bucket}.oss-cn-beijing.aliyuncs.com/kepu/index.html