-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
109 lines (106 loc) · 3.56 KB
/
Copy pathdocker-compose.yml
File metadata and controls
109 lines (106 loc) · 3.56 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
services:
# LiveKit сервер
livekit:
# v1.8.2+ требуется для byte streams (картинки в чате)
image: livekit/livekit-server:latest
container_name: voice-app-livekit
ports:
- "7880:7880"
- "7881:7881"
- "7882:7882"
# - "50100-50200:50100-50200/udp"
volumes:
- ./livekit/livekit.prod.yaml:/etc/livekit.yaml:ro
command: --config /etc/livekit.yaml
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:7880/"]
interval: 10s
timeout: 5s
retries: 3
# Token server для выдачи токенов LiveKit
# LIVEKIT_WS_URL — URL, который отдаётся БРАУЗЕРУ в ответе (должен быть localhost или твой домен)
token-server:
build:
context: ./backend
dockerfile: Dockerfile
container_name: voice-app-token-server
ports:
- "4000:4000"
environment:
- LIVEKIT_API_KEY=${LIVEKIT_API_KEY}
- LIVEKIT_API_SECRET=${LIVEKIT_API_SECRET}
- LIVEKIT_WS_URL=${LIVEKIT_WS_URL:-ws://livekit:7880}
- LIVEKIT_PUBLIC_WS_URL=${LIVEKIT_PUBLIC_WS_URL:-ws://localhost:7880}
- LIVEKIT_API_URL=${LIVEKIT_API_URL:-}
- TOKEN_CORS_ORIGINS=${TOKEN_CORS_ORIGINS:-*}
- TOKEN_ROOM_MAX_LENGTH=${TOKEN_ROOM_MAX_LENGTH:-100}
- TOKEN_IDENTITY_MAX_LENGTH=${TOKEN_IDENTITY_MAX_LENGTH:-100}
- TOKEN_TTL=${TOKEN_TTL:-3600}
depends_on:
- livekit
restart: unless-stopped
healthcheck:
test:
[
"CMD",
"node",
"-e",
"fetch('http://127.0.0.1:4000/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))",
]
interval: 10s
timeout: 5s
retries: 5
start_period: 15s
# YouTube Bot — LiveKit Agent Server (dispatch-based)
agent-server:
build:
context: ./agent-server
container_name: voice-app-agent-server
ports:
- "8081:8081"
environment:
- LIVEKIT_WS_URL=${LIVEKIT_WS_URL:-ws://livekit:7880}
- LIVEKIT_API_KEY=${LIVEKIT_API_KEY}
- LIVEKIT_API_SECRET=${LIVEKIT_API_SECRET}
- AGENT_MEDIA_PROXY=${AGENT_MEDIA_PROXY:-}
- AGENT_VIDEO_FPS=${AGENT_VIDEO_FPS:-30}
- OPENROUTER_API_KEY=${OPENROUTER_API_KEY:-}
- OPENROUTER_MODEL=${OPENROUTER_MODEL:-openai/gpt-4o-mini}
- OPENROUTER_HTTP_REFERER=${OPENROUTER_HTTP_REFERER:-}
- OPENROUTER_SITE_NAME=${OPENROUTER_SITE_NAME:-}
depends_on:
- livekit
restart: unless-stopped
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8081/')"]
interval: 15s
timeout: 5s
retries: 3
# Frontend приложение
# Важно: VITE_* — это URL для БРАУЗЕРА (твой ПК). Всегда localhost или твой домен, НЕ livekit/agent-server!
frontend:
build:
context: .
dockerfile: packages/web/Dockerfile
args:
VITE_TOKEN_ENDPOINT: ${VITE_TOKEN_ENDPOINT:-http://localhost:4000/api/token}
container_name: voice-app-frontend
ports:
- "1420:80"
depends_on:
token-server:
condition: service_healthy
required: true
livekit:
condition: service_healthy
required: true
agent-server:
condition: service_started
required: false
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:80/"]
interval: 10s
timeout: 5s
retries: 3