Skip to content

Latest commit

 

History

History
166 lines (125 loc) · 3.96 KB

File metadata and controls

166 lines (125 loc) · 3.96 KB

Docker Compose Containerization for Subtitle Creator

將 subtitle-creator 專案容器化,使用 Docker Compose 運行,避免本地端環境架設需求,並透過 volume mount 監控影片資料夾自動生成 SRT 字幕。

User Review Required

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。首次建置需要較長時間。

Proposed Changes

Docker Configuration

[NEW] Dockerfile

建立多階段 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"]

[NEW] docker-compose.yml

建立 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"]

[NEW] .dockerignore

排除不必要的檔案以減少建置時間:

.git/
__pycache__/
*.pyc
.venv/
temp/
*.mp4
*.mkv

Watch Mode (檔案監控)

[NEW] watcher.py

新增檔案監控模組:

  • 使用 watchdog 監控指定資料夾
  • 偵測新增的影片檔案
  • 自動觸發字幕生成流程
  • 避免重複處理(追蹤已處理檔案)

[MODIFY] cli.py

新增 watch 命令:

@app.command()
def watch(
    input_dir: Path,
    output_dir: Path = None,
    ...
):
    """持續監控資料夾,自動處理新增的影片檔案"""

[MODIFY] pyproject.toml

新增依賴:

dependencies = [
    ...
    "watchdog>=4.0.0",  # 檔案監控
]

Documentation

[NEW] README.Docker.md

Docker 使用說明文件:

  • 系統需求(GPU、NVIDIA Container Toolkit)
  • 快速開始指南
  • Volume 配置說明
  • 自訂配置方式

Verification Plan

Manual Verification

由於此專案需要 GPU 和大量模型檔案,將採用手動驗證:

  1. Docker 映像建置測試

    docker-compose build

    驗證:建置成功完成,無錯誤訊息

  2. 容器啟動測試

    docker-compose up

    驗證:容器正常啟動,顯示監控訊息

  3. 檔案監控測試

    • 複製測試影片至 ./videos 資料夾
    • 驗證:SRT 檔案自動生成於 ./output 資料夾

Note

請問您是否有測試用的影片檔案?如果需要,我可以建議使用公開的短影片來測試。