# MeloTTS-Korean 테스트 서버 컨테이너.
# 호스트에 Python/MeCab/Rust 안 깔고 싶을 때 사용.
#
# 빌드:  docker build -t melo-test .
# 실행:  docker run --rm -p 7860:7860 melo-test
#        (가중치 캐시 유지하려면: -v melo-cache:/root/.cache/huggingface)
FROM python:3.11-slim

# fugashi/mecab-python3 빌드용 MeCab + tokenizers 빌드용 Rust + 기본 빌드 툴
RUN apt-get update && apt-get install -y --no-install-recommends \
        build-essential \
        git \
        curl \
        ca-certificates \
        mecab \
        libmecab-dev \
        mecab-ipadic-utf8 \
    && rm -rf /var/lib/apt/lists/*

# Rust (tokenizers 소스 빌드 fallback 대비)
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \
    | sh -s -- -y --default-toolchain stable --profile minimal
ENV PATH="/root/.cargo/bin:${PATH}"

WORKDIR /app

COPY requirements.txt .
RUN pip install --upgrade pip setuptools wheel \
    && pip install -r requirements.txt

# unidic 사전 데이터 (~250MB). MeloTTS 가 한국어만 써도 임포트 시점에
# 일본어 MeCab Tagger 를 무조건 초기화하므로 생략 불가.
RUN python -m unidic download

COPY . .

EXPOSE 7860
ENV PORT=7860
CMD ["python", "server.py"]
