-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
128 lines (118 loc) · 3.87 KB
/
Copy pathdocker-compose.yml
File metadata and controls
128 lines (118 loc) · 3.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
volumes:
# 共享媒体文件存储
media-pipeline:
driver: local
driver_opts:
type: none
o: bind
device: ./shared/media
# Redis数据持久化
redis-data:
driver: local
# ASR模型缓存
asr-models:
driver: local
# ASR向量数据库(RAG热词系统)
asr-vector-db:
driver: local
# ModelScope 缓存(避免重复下载模型)
modelscope-cache:
driver: local
services:
# 1. 视频解析下载服务 (基于Douyin_TikTok_Download_API)
video-service:
build:
context: ./services/Douyin_TikTok_Download_API
dockerfile: Dockerfile
container_name: copywriter-video-service
# 内部服务,仅通过 orchestrator 访问,无需暴露端口
volumes:
- media-pipeline:/app/downloads
- ./config.yml:/app/config.yaml # 自定义配置文件
environment:
TZ: Asia/Shanghai # 设置时区为亚洲/上海
PUID: 1026 # 设置容器内部的用户 ID
PGID: 100 # 设置容器内部的用户组 ID
networks:
- app-network
restart: always
# 2. ASR语音识别服务 (NVIDIA NGC - CUDA 12.8 最高性能)
asr-service:
build: ./services/asr-service
container_name: copywriter-asr-service
ports:
- "8082:8000"
volumes:
- media-pipeline:/app/media
- ./services/asr-service/models:/app/models # 挂载本地模型目录(开发用)
- ./services/asr-service/user_models:/app/user_models # 热词和用户数据持久化
- asr-vector-db:/app/vector_db # RAG 向量数据库持久化
- modelscope-cache:/root/.cache/modelscope # ModelScope 缓存持久化(避免重复下载)
environment:
- MODEL_CACHE_DIR=/app/models
- PYTHONPATH=/app
- CUDA_VISIBLE_DEVICES=0 # 使用第一个GPU
- ASR_MODEL=funasr-nano-2512 # Fun-ASR-Nano-2512 模型
- RAG_ENABLED=true # 启用 RAG 热词检索
- QDRANT_PATH=/app/vector_db # RAG 向量库路径
- DEFAULT_SCENE=${DEFAULT_SCENE:-tech} # 默认场景配置
- USER_SCENE_MERGE=${USER_SCENE_MERGE:-} # user场景要合并的场景列表
networks:
- app-network
restart: always
runtime: nvidia # 启用NVIDIA GPU支持
# 3. 任务编排服务 (API Gateway + 集成FFmpeg)
orchestrator-service:
build: ./services/orchestrator
container_name: copywriter-orchestrator
ports:
- "8081:8000"
volumes:
- media-pipeline:/app/media
environment:
- VIDEO_SERVICE_URL=http://video-service:80
- ASR_SERVICE_URL=http://asr-service:8000
- REDIS_URL=redis://redis:6379/0
- MEDIA_PATH=/app/media
- TELEGRAM_BOT_SERVICE_URL=http://telegram-bot:8000 # Telegram Bot 服务回调 URL
- TASK_AUTO_CLEANUP=${TASK_AUTO_CLEANUP:-true}
- TASK_TTL_SECONDS=${TASK_TTL_SECONDS:-3600}
depends_on:
- redis
- video-service
- asr-service
networks:
- app-network
restart: always
# Redis任务队列和缓存
redis:
image: redis:alpine
container_name: copywriter-redis
# 内部服务,仅通过 Docker 网络访问,无需暴露端口
volumes:
- redis-data:/data
networks:
- app-network
restart: always
command: redis-server --appendonly yes --notify-keyspace-events Ex
# 4. Telegram Bot 服务 (混合: Bot + 回调 API)
telegram-bot:
build: ./services/telegram-bot
container_name: copywriter-telegram-bot
# 回调 API 仅供 orchestrator 内部调用 (http://telegram-bot:8000)
volumes:
- media-pipeline:/app/media # 访问共享媒体文件
environment:
- TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}
- ORCHESTRATOR_URL=http://orchestrator-service:8000
- ORCHESTRATOR_TIMEOUT=30
depends_on:
- orchestrator-service
- redis
networks:
- app-network
restart: always
networks:
app-network:
driver: bridge
name: copywriter-network