File size: 2,531 Bytes
7ac6163
 
 
 
 
 
5ee5954
 
7ac6163
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c1db98e
 
7ac6163
 
 
06b738c
7ac6163
 
 
 
c1db98e
e8c02eb
ebe8468
 
 
7ac6163
06b738c
 
 
 
 
 
 
 
 
 
7ac6163
 
 
06b738c
 
7ac6163
 
06b738c
c1db98e
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
# ============================================
# CrownCode Backend - Hugging Face Spaces
# ============================================
# SDK: Docker | Hardware: CPU Basic (Free)
# ============================================

# Python 3.11 slim imajını kullan
FROM python:3.11-slim

# Çalışma dizini
WORKDIR /app

# Ortam değişkenleri
ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    PIP_NO_CACHE_DIR=1 \
    PIP_DISABLE_PIP_VERSION_CHECK=1 \
    TRANSFORMERS_CACHE=/app/.cache/huggingface \
    HF_HOME=/app/.cache/huggingface \
    TORCH_HOME=/app/.cache/torch

# Sistem bağımlılıkları + FFmpeg
RUN apt-get update && apt-get install -y --no-install-recommends \
    ffmpeg \
    libsndfile1 \
    git \
    curl \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

# Cache dizinleri
RUN mkdir -p /app/.cache/huggingface /app/.cache/torch \
    && chmod -R 777 /app/.cache

# Requirements (önce kopyala - Docker cache için)
COPY requirements.txt .

# PyTorch CPU versiyonu + diğer paketler
RUN pip install --no-cache-dir torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu \
    && pip install --no-cache-dir -r requirements.txt \
    && pip install --no-cache-dir "huggingface-hub>=0.20.0"

# Hugging Face Spaces için non-root kullanıcı (güvenlik)
RUN useradd -m -u 1000 user \
    && mkdir -p /app/models \
    && chown -R user:user /app
USER user

ENV HOME=/home/user \
    PATH=/home/user/.local/bin:$PATH \
    AURIS_MODELS_REPO=Rthur2003/auris-models \
    MODELS_DIR=/app/models \
    AURIS_WARMUP=1 \
    NUMBA_CACHE_DIR=/tmp/numba-cache

# Model ağırlıkları imaja gömülür: Space uykudan her uyandığında ~415 MB
# AURIS modelini ve wav2vec2-base'i yeniden indirmek yerine hazır bulur.
# Kod değişince bu katmanlar önbellekten gelir (yalnızca startup.py değişirse yeniden iner).
COPY --chown=user:user startup.py .
RUN python startup.py \
    && python -c "from transformers import Wav2Vec2Model; Wav2Vec2Model.from_pretrained('facebook/wav2vec2-base')"

# Uygulama kodu
COPY --chown=user:user app ./app

# Hugging Face Spaces varsayılan port: 7860
EXPOSE 7860

# Health check — modeller imajda, açılış kısa
HEALTHCHECK --interval=30s --timeout=10s --start-period=90s --retries=5 \
    CMD curl -f http://localhost:7860/api/health || exit 1

# startup.py dosyalar mevcutsa hiçbir şey indirmez; eksik kalan olursa tamamlar.
CMD ["sh", "-c", "python startup.py && uvicorn app.main:app --host 0.0.0.0 --port 7860"]