# audio2text — 双语字幕生成服务 # CPU dev / GPU prod 两套配置,按需切换 service。 # # 开发(CPU,热重载,改代码零重建): # docker compose --profile dev up -d --build # CPU 生产: # docker compose --profile cpu up -d --build # GPU 生产(本机有 nvidia runtime 时): # docker compose --profile gpu up -d --build # # 模型缓存(/models)跨容器复用,首次启动下载、之后秒起。 # pip wheel 缓存由 BuildKit --mount=type=cache 管理,跨构建复用。 services: # ---------------- 开发:CPU + 源码挂载 + uvicorn reload ---------------- # 改 app/ 下代码无需重建镜像,保存即热重载。 audio2text-cpu-dev: build: context: . args: VARIANT: cpu target: dev image: audio2text:cpu-dev container_name: audio2text-dev ports: - "8000:8000" volumes: - ./app:/app/app - ./data:/data - ./models:/models - ./config.yaml:/app/config.yaml:ro environment: CONFIG_PATH: /app/config.yaml restart: unless-stopped profiles: ["dev"] # ---------------- CPU 生产 ---------------- audio2text-cpu: build: context: . args: VARIANT: cpu target: final image: audio2text:cpu container_name: audio2text ports: - "8000:8000" volumes: - ./data:/data - ./models:/models - ./config.yaml:/app/config.yaml:ro environment: CONFIG_PATH: /app/config.yaml restart: unless-stopped profiles: ["cpu", ""] # ---------------- GPU 生产 ---------------- audio2text-gpu: build: context: . args: VARIANT: gpu target: final image: audio2text:gpu container_name: audio2text-gpu ports: - "8001:8000" volumes: - ./data:/data - ./models:/models - ./config.gpu.yaml:/app/config.yaml:ro environment: CONFIG_PATH: /app/config.yaml deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] restart: unless-stopped profiles: ["gpu"]