將 subtitle-creator 專案容器化,使用 Docker Compose 運行,避免本地端環境架設需求,並透過 volume mount 監控影片資料夾自動生成 SRT 字幕。
Important
GPU 支援必要性: 此專案需要 NVIDIA GPU 來運行 WhisperX 和 TranslateGemma 模型。Docker 配置將使用 NVIDIA Container Toolkit。請確認您的系統已安裝:
- Docker Desktop (或 Docker Engine)
- NVIDIA Driver
- NVIDIA Container Toolkit (nvidia-docker2)
Warning
映像檔案大小: 由於包含 PyTorch + CUDA 和 AI 模型依賴,Docker 映像預計約 15-20 GB。首次建置需要較長時間。
建立多階段 Dockerfile:
- 基礎映像:
nvidia/cuda:12.1-cudnn8-runtime-ubuntu22.04 - 安裝 Python 3.11、FFmpeg 和系統依賴
- 使用
uv快速安裝 Python 套件 - 設定工作目錄和入口點
FROM nvidia/cuda:12.1-cudnn8-runtime-ubuntu22.04
# 系統依賴安裝
RUN apt-get update && apt-get install -y \
python3.11 python3.11-venv ffmpeg \
&& rm -rf /var/lib/apt/lists/*
# Python 套件安裝
COPY pyproject.toml .
RUN pip install -e .
# 應用程式複製
COPY src/ /app/src/
WORKDIR /app
ENTRYPOINT ["subtitle-creator"]建立 Docker Compose 配置:
- 服務名稱:
subtitle-creator - GPU 資源分配 (NVIDIA)
- Volume mounts:
./videos:/data/videos- 影片輸入資料夾./output:/data/output- SRT 輸出資料夾./config.yaml:/app/config.yaml- 配置檔
services:
subtitle-creator:
build: .
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
volumes:
- ./videos:/data/videos
- ./output:/data/output
- ./config.yaml:/app/config.yaml:ro
command: ["watch", "/data/videos", "--output", "/data/output"]排除不必要的檔案以減少建置時間:
.git/
__pycache__/
*.pyc
.venv/
temp/
*.mp4
*.mkv
新增檔案監控模組:
- 使用
watchdog監控指定資料夾 - 偵測新增的影片檔案
- 自動觸發字幕生成流程
- 避免重複處理(追蹤已處理檔案)
新增 watch 命令:
@app.command()
def watch(
input_dir: Path,
output_dir: Path = None,
...
):
"""持續監控資料夾,自動處理新增的影片檔案"""新增依賴:
dependencies = [
...
"watchdog>=4.0.0", # 檔案監控
]Docker 使用說明文件:
- 系統需求(GPU、NVIDIA Container Toolkit)
- 快速開始指南
- Volume 配置說明
- 自訂配置方式
由於此專案需要 GPU 和大量模型檔案,將採用手動驗證:
-
Docker 映像建置測試
docker-compose build
驗證:建置成功完成,無錯誤訊息
-
容器啟動測試
docker-compose up
驗證:容器正常啟動,顯示監控訊息
-
檔案監控測試
- 複製測試影片至
./videos資料夾 - 驗證:SRT 檔案自動生成於
./output資料夾
- 複製測試影片至
Note
請問您是否有測試用的影片檔案?如果需要,我可以建議使用公開的短影片來測試。