142 lines
5.8 KiB
YAML
142 lines
5.8 KiB
YAML
|
|
# ════════════════════════════════════════════════════════════════════
|
|
# VoiceScript — 주요 설정 체크리스트
|
|
# 빌드 전에 아래 항목을 반드시 확인하세요
|
|
# ════════════════════════════════════════════════════════════════════
|
|
#
|
|
# ✅ 필수 변경
|
|
# AUTH_USERNAME / AUTH_PASSWORD / JWT_SECRET
|
|
#
|
|
# 🔧 환경에 맞게 조정
|
|
# TZ → 타임존 (기본: Asia/Seoul)
|
|
# WHISPER_MODEL → tiny/base/small/medium/large-v3
|
|
# 5825u + 16GB RAM 기준: medium 권장
|
|
# MAX_UPLOAD_MB → 업로드 최대 크기 (기본: 500MB)
|
|
# OUTPUT_KEEP_HOURS → 결과 파일 보관 시간 (기본: 48h, 0=삭제 안 함)
|
|
# JWT_EXPIRE_HOURS → 로그인 세션 유지 시간 (기본: 12h)
|
|
#
|
|
# 🌐 Ollama 설정
|
|
# OLLAMA_URL → 같은 호스트이므로 host.docker.internal:11434 그대로 사용
|
|
# OLLAMA_TIMEOUT → 큰 모델(11b+) 사용 시 늘려주세요 (기본: 180초)
|
|
#
|
|
# ════════════════════════════════════════════════════════════════════
|
|
|
|
services:
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: whisper_redis
|
|
restart: unless-stopped
|
|
environment:
|
|
- TZ=Asia/Seoul
|
|
volumes:
|
|
- redis_data:/data
|
|
networks:
|
|
- whisper_net
|
|
|
|
app:
|
|
build:
|
|
context: ./app
|
|
dockerfile: Dockerfile
|
|
container_name: whisper_app
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8800:8000" # 호스트 Nginx가 프록시 → 외부 직접 접근 차단
|
|
environment:
|
|
# ── 타임존 ──────────────────────────────────────────
|
|
- TZ=Asia/Seoul # 로그·파일 타임스탬프에 영향
|
|
|
|
# ── 인증 (반드시 변경) ──────────────────────────────
|
|
- AUTH_USERNAME=byun
|
|
- AUTH_PASSWORD=admin
|
|
- JWT_SECRET=your-very-secret-key-change-this
|
|
- JWT_EXPIRE_HOURS=12 # 로그인 세션 유지 시간 (1~720 사이)
|
|
|
|
# ── Whisper STT ─────────────────────────────────────
|
|
- REDIS_URL=redis://redis:6379/0
|
|
- UPLOAD_DIR=/data/uploads
|
|
- OUTPUT_DIR=/data/outputs
|
|
- WHISPER_MODEL=medium # tiny/base/small/medium/large-v3
|
|
- WHISPER_DEVICE=cpu # 5825u = CPU (GPU 없음)
|
|
- WHISPER_COMPUTE_TYPE=int8 # CPU 최적화: int8 권장
|
|
- WHISPER_LANGUAGE=ko # 한국어 고정 (다국어 필요 시 비워두면 자동 감지)
|
|
- WHISPER_BEAM_SIZE=5 # 정확도↑ vs 속도↓, 기본 5 권장
|
|
- WHISPER_INITIAL_PROMPT= # 한국어 인식 힌트 (예: "안녕하세요. 통화 내용입니다.")
|
|
# 도메인 특화 단어가 있으면 여기에 넣으면 정확도 향상
|
|
|
|
# ── 파일 관리 ────────────────────────────────────────
|
|
- MAX_UPLOAD_MB=500 # 업로드 최대 파일 크기 (MB)
|
|
- OUTPUT_KEEP_HOURS=48 # 결과 파일 보관 시간 (0=무제한, 디스크 관리 주의)
|
|
|
|
# ── PaddleOCR ────────────────────────────────────────
|
|
- OCR_LANG=korean # korean/en/japan/chinese_cht/ch
|
|
- OCR_USE_GPU=false
|
|
|
|
# ── Ollama OCR ───────────────────────────────────────
|
|
# 같은 Debian 호스트의 Ollama(11434) → host.docker.internal 사용
|
|
- OLLAMA_URL=http://192.168.0.126:11434
|
|
- OLLAMA_TIMEOUT=180 # 초 단위, llama3.2-vision:11b 이상은 300 이상 권장
|
|
|
|
volumes:
|
|
- stt_data:/data
|
|
- whisper_models:/root/.cache/huggingface
|
|
- paddle_models:/root/.paddleocr
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway" # Linux에서 host 참조 필수
|
|
depends_on:
|
|
- redis
|
|
networks:
|
|
- whisper_net
|
|
|
|
worker:
|
|
build:
|
|
context: ./app
|
|
dockerfile: Dockerfile
|
|
container_name: whisper_worker
|
|
restart: unless-stopped
|
|
# --max-tasks-per-child: N개 태스크 처리 후 워커 재시작 → 메모리 누수 방지
|
|
# Whisper + PaddleOCR 모델이 메모리에 계속 쌓이는 것을 막아줌
|
|
command: >
|
|
celery -A tasks worker --pool=solo
|
|
--loglevel=info
|
|
--concurrency=1
|
|
--max-tasks-per-child=50
|
|
-Q stt,ocr
|
|
environment:
|
|
- TZ=Asia/Seoul
|
|
- REDIS_URL=redis://redis:6379/0
|
|
- UPLOAD_DIR=/data/uploads
|
|
- OUTPUT_DIR=/data/outputs
|
|
- WHISPER_MODEL=medium
|
|
- WHISPER_DEVICE=cpu
|
|
- WHISPER_COMPUTE_TYPE=int8
|
|
- WHISPER_LANGUAGE=ko
|
|
- WHISPER_BEAM_SIZE=5
|
|
- WHISPER_INITIAL_PROMPT=
|
|
- MAX_UPLOAD_MB=500
|
|
- OUTPUT_KEEP_HOURS=48
|
|
- OCR_LANG=korean
|
|
- OCR_USE_GPU=false
|
|
- OLLAMA_URL=http://192.168.0.126:11434
|
|
- OLLAMA_TIMEOUT=180
|
|
- JWT_SECRET=your-very-secret-key-change-this
|
|
volumes:
|
|
- stt_data:/data
|
|
- whisper_models:/root/.cache/huggingface
|
|
- paddle_models:/root/.paddleocr
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
depends_on:
|
|
- redis
|
|
networks:
|
|
- whisper_net
|
|
|
|
volumes:
|
|
redis_data:
|
|
stt_data:
|
|
whisper_models:
|
|
paddle_models:
|
|
|
|
networks:
|
|
whisper_net:
|
|
driver: bridge
|