Spaces:
Build error
Build error
File size: 3,893 Bytes
5afd702 98f15bb 5afd702 98f15bb cd586a0 0d7b13b 98f15bb a28587a 5afd702 a28587a 0d7b13b a28587a a94c078 a20c5b1 a28587a a20c5b1 0d7b13b fa6742e 0d7b13b a28587a a20c5b1 0d7b13b fa6742e 0d7b13b a94c078 98f15bb a94c078 98f15bb 5afd702 67a5fcc 5afd702 b376975 aac9cb4 b376975 aac9cb4 b376975 aac9cb4 5afd702 67a5fcc 98f15bb 67a5fcc cd586a0 | 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 | # 베이스 이미지 선택
FROM python:3.10-slim
# 필수 패키지 설치
RUN apt-get update && \
apt-get install -y \
git \
unzip \
ffmpeg \
build-essential \
g++ \
gcc \
python3-dev \
libffi-dev \
libssl-dev \
fontconfig && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
WORKDIR /app
# 환경변수 설정 (/tmp 경로로 변경하여 캐시 문제 해결)
ENV PYTHONPATH="/app/model:/app/model/third_party/Matcha-TTS:/app:$PYTHONPATH"
ENV HF_HOME="/tmp/.cache/huggingface"
ENV MPLCONFIGDIR="/tmp/.cache/matplotlib"
ENV FONTCONFIG_PATH="/tmp/.cache/fontconfig"
ENV NUMBA_DISABLE_JIT=1
ENV NUMBA_DISABLE_CUDA=1
ENV MODELSCOPE_CACHE="/tmp/.cache/modelscope"
# 캐시 및 출력 디렉토리들 생성 및 권한 설정
RUN mkdir -p /tmp/.cache/huggingface && \
mkdir -p /tmp/.cache/matplotlib && \
mkdir -p /tmp/.cache/fontconfig && \
mkdir -p /tmp/.cache/modelscope && \
mkdir -p /app/outputs && \
mkdir -p /.config/matplotlib && \
mkdir -p /.modelscope && \
mkdir -p /tmp && \
chmod -R 777 /tmp/.cache && \
chmod -R 777 /app/outputs && \
chmod -R 777 /.config && \
chmod -R 777 /.modelscope && \
chmod -R 777 /tmp
# requirements.txt 복사 및 설치
COPY requirements.txt .
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
# 모든 파일 복사
COPY . .
# 디렉토리 구조 확인 및 생성
RUN mkdir -p /app/model/third_party/Matcha-TTS
# 심볼릭 링크 생성 (cosyvoice와 matcha 모듈을 루트에서 접근 가능하게)
RUN ln -sf /app/model/cosyvoice /app/cosyvoice
RUN ln -sf /app/model/third_party/Matcha-TTS /app/matcha
# CosyVoice가 찾는 경로에 맞춰 pretrained_models 심볼릭 링크 생성
# ROOT_DIR이 /app/cosyvoice라면 ../../pretrained_models는 /app/pretrained_models가 됨
RUN ln -sf /app/pretrained_models /app/model/pretrained_models
RUN ln -sf /app/pretrained_models /app/cosyvoice/pretrained_models
# 모델 다운로드 (빌드 타임에 수행)
RUN python -c "\
from modelscope import snapshot_download;\
snapshot_download('iic/CosyVoice2-0.5B', local_dir='/app/pretrained_models/CosyVoice2-0.5B');\
snapshot_download('iic/CosyVoice-ttsfrd', local_dir='/app/pretrained_models/CosyVoice-ttsfrd')"
# 리소스 압축 해제
RUN cd /app/pretrained_models/CosyVoice-ttsfrd && \
if [ -f "resource.zip" ]; then \
echo "Extracting resource.zip..."; \
unzip -o resource.zip && \
chmod -R 755 resource/ && \
echo "Resource extraction completed"; \
ls -la resource/; \
else \
echo "resource.zip not found"; \
ls -la .; \
fi
# 디렉토리 구조 최종 확인
RUN echo "=== Final directory structure ===" && \
ls -la /app/pretrained_models/ && \
echo "=== CosyVoice-ttsfrd contents ===" && \
ls -la /app/pretrained_models/CosyVoice-ttsfrd/ && \
echo "=== Resource directory ===" && \
ls -la /app/pretrained_models/CosyVoice-ttsfrd/resource/ || echo "resource directory not found"
# .whl 파일 설치 (빌드 타임에 수행)
RUN cd /app && \
if [ -f "pretrained_models/CosyVoice-ttsfrd/ttsfrd_dependency-0.1-py3-none-any.whl" ]; then \
pip install pretrained_models/CosyVoice-ttsfrd/ttsfrd_dependency-0.1-py3-none-any.whl; \
else \
echo "ttsfrd_dependency whl not found"; \
fi
RUN cd /app && \
if [ -f "pretrained_models/CosyVoice-ttsfrd/ttsfrd-0.4.2-cp310-cp310-linux_x86_64.whl" ]; then \
pip install pretrained_models/CosyVoice-ttsfrd/ttsfrd-0.4.2-cp310-cp310-linux_x86_64.whl; \
else \
echo "ttsfrd core whl not found"; \
ls -la pretrained_models/CosyVoice-ttsfrd/; \
fi
# 포트 노출 (Hugging Face Spaces는 7860 사용)
EXPOSE 7860
# FastAPI app 실행 (모델은 startup시 자동 초기화)
CMD ["python", "app.py"] |