smarteye-backend / Dockerfile
AkJeond's picture
fix(backend): upgrade python to 3.10 for HF Spaces
37c67c0
# ============================================================================
# SmartEyeSsen Backend - Hugging Face Spaces Dockerfile
# ============================================================================
# Hugging Face Spaces ๋ฐฐํฌ ์ „์šฉ Dockerfile
# - 16GB RAM ํ™œ์šฉ (DocLayout-YOLO + PyTorch)
# - ๋น„-๋ฃจํŠธ ์‚ฌ์šฉ์ž ์‹คํ–‰ (๋ณด์•ˆ ์š”๊ตฌ์‚ฌํ•ญ)
# - ํฌํŠธ 7860 ํ•„์ˆ˜ (HF Spaces ํ‘œ์ค€)
# ============================================================================
FROM python:3.10-slim
# ============================================================================
# 1. ์‹œ์Šคํ…œ ํŒจํ‚ค์ง€ ์„ค์น˜ (Root ๊ถŒํ•œ ํ•„์š”)
# ============================================================================
USER root
RUN apt-get update && apt-get install -y --no-install-recommends \
# OCR ์—”์ง„
tesseract-ocr \
tesseract-ocr-kor \
tesseract-ocr-eng \
# OpenCV ์˜์กด์„ฑ
libgl1 \
libglib2.0-0 \
# ๋นŒ๋“œ ๋„๊ตฌ
gcc \
g++ \
# Git (DocLayout-YOLO ์„ค์น˜์šฉ)
git \
# ๋กœ์ผ€์ผ ์„ค์ •
locales \
&& rm -rf /var/lib/apt/lists/*
# UTF-8 ๋กœ์ผ€์ผ ์„ค์ • (ํ•œ๊ธ€ ์ง€์›)
RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && \
sed -i '/ko_KR.UTF-8/s/^# //g' /etc/locale.gen && \
locale-gen
# ============================================================================
# 2. ๋น„-๋ฃจํŠธ ์‚ฌ์šฉ์ž ์ƒ์„ฑ (Hugging Face Spaces ๋ณด์•ˆ ์š”๊ตฌ์‚ฌํ•ญ)
# ============================================================================
RUN useradd -m -u 1000 user
USER user
# ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •
ENV HOME=/home/user \
PATH=/home/user/.local/bin:$PATH \
LANG=ko_KR.UTF-8 \
LANGUAGE=ko_KR:en \
LC_ALL=ko_KR.UTF-8 \
PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1
# ============================================================================
# 3. ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ์„ค์ •
# ============================================================================
WORKDIR $HOME/app
# ============================================================================
# 4. Python ์˜์กด์„ฑ ์„ค์น˜
# ============================================================================
# requirements.txt ๋จผ์ € ๋ณต์‚ฌ (Docker ์บ์‹œ ํ™œ์šฉ)
COPY --chown=user requirements.txt .
# PyPI ํŒจํ‚ค์ง€ ์„ค์น˜
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r requirements.txt
# DocLayout-YOLO ์„ค์น˜ (Git ์ง์ ‘ ์„ค์น˜)
RUN pip install --no-cache-dir git+https://github.com/opendatalab/DocLayout-YOLO.git
# ============================================================================
# 5. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ ๋ณต์‚ฌ
# ============================================================================
COPY --chown=user . .
# ============================================================================
# 6. ์ž„์‹œ ์ €์žฅ์†Œ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ
# ============================================================================
# HF Spaces๋Š” /tmp ์™ธ์—๋Š” ์“ฐ๊ธฐ ๊ถŒํ•œ ์ œํ•œ๋  ์ˆ˜ ์žˆ์Œ
RUN mkdir -p /tmp/uploads && \
mkdir -p $HOME/app/uploads $HOME/app/static $HOME/app/test_pipeline_outputs && \
chmod -R 755 $HOME/app/uploads $HOME/app/static $HOME/app/test_pipeline_outputs
ENV TMPDIR=/tmp/uploads
# ============================================================================
# 7. Tesseract ์„ค์น˜ ํ™•์ธ
# ============================================================================
RUN tesseract --version && tesseract --list-langs
# ============================================================================
# 8. ํฌํŠธ ์„ค์ • (HF Spaces ํ•„์ˆ˜ ํฌํŠธ)
# ============================================================================
EXPOSE 7860
# ============================================================================
# 9. ์„œ๋ฒ„ ์‹คํ–‰
# ============================================================================
# Hugging Face Spaces๋Š” 7860 ํฌํŠธ ํ•„์ˆ˜
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "7860", "--timeout-keep-alive", "300"]