fix: --pool=solo SIGSEGV 해결 및 전체 설정 정리

This commit is contained in:
root
2026-04-20 20:39:24 +09:00
commit 248ac1deea
13 changed files with 2979 additions and 0 deletions

141
docker-compose.yml.bak Normal file
View File

@@ -0,0 +1,141 @@
# ════════════════════════════════════════════════════════════════════
# 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