File size: 3,982 Bytes
fe7c89a
0546432
 
 
 
 
 
fe7c89a
 
37c67c0
fe7c89a
0546432
 
 
 
fe7c89a
 
0546432
fe7c89a
 
 
0546432
d322c27
fe7c89a
0546432
fe7c89a
 
0546432
 
 
 
fe7c89a
 
0546432
 
 
 
fe7c89a
0546432
 
 
 
 
fe7c89a
0546432
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fe7c89a
0546432
 
 
 
fe7c89a
 
0546432
 
 
fe7c89a
0546432
 
 
 
 
 
 
fe7c89a
0546432
fe7c89a
0546432
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# ============================================================================
# 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"]