Hayk Arutyunyan commited on
Commit
c59e9f9
·
1 Parent(s): 38e057b

Switch to Docker with Python 3.10

Browse files
Files changed (2) hide show
  1. Dockerfile +59 -0
  2. README.md +3 -0
Dockerfile ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Берём официальный образ Python 3.10 (slim — облегчённый вариант)
2
+ # Это ключевой момент: мы фиксируем версию Python,
3
+ # чтобы не зависеть от Python 3.13 в Gradio runtime.
4
+ FROM python:3.10-slim
5
+
6
+
7
+ # Отключаем создание .pyc файлов (кеш байткода)
8
+ # Это уменьшает мусор в контейнере
9
+ ENV PYTHONDONTWRITEBYTECODE=1 \
10
+
11
+ # Логи выводятся сразу (без буферизации)
12
+ # Нужно, чтобы в HF логах ты видел всё в реальном времени
13
+ PYTHONUNBUFFERED=1 \
14
+
15
+ # Заставляем Gradio слушать все интерфейсы контейнера
16
+ # Без этого приложение будет доступно только внутри контейнера
17
+ GRADIO_SERVER_NAME=0.0.0.0 \
18
+
19
+ # Порт, который ожидает Hugging Face (должен совпадать с app_port в README)
20
+ GRADIO_SERVER_PORT=7860
21
+
22
+
23
+ # Обновляем список пакетов apt
24
+ # Устанавливаем системные библиотеки, которые нужны:
25
+ # - gcc / g++ / build-essential — для сборки C-зависимостей
26
+ # - libglib2.0-0 / libgl1 — нужны opencv
27
+ RUN apt-get update && apt-get install -y --no-install-recommends \
28
+ gcc g++ build-essential \
29
+ libglib2.0-0 libgl1 \
30
+ && rm -rf /var/lib/apt/lists/*
31
+
32
+
33
+ # Создаём рабочую директорию внутри контейнера
34
+ # Все дальнейшие команды будут выполняться в /app
35
+ WORKDIR /app
36
+
37
+
38
+ # Копируем только requirements.txt
39
+ # Это делается отдельно, чтобы Docker мог кешировать слой
40
+ COPY requirements.txt .
41
+
42
+
43
+ # Обновляем pip и устанавливаем зависимости
44
+ # --no-cache-dir уменьшает размер образа
45
+ RUN pip install --upgrade pip && pip install -r requirements.txt
46
+
47
+
48
+ # Копируем весь проект в контейнер
49
+ COPY . .
50
+
51
+
52
+ # Открываем порт 7860 внутри контейнера
53
+ # Это декларативная команда — для читаемости
54
+ EXPOSE 7860
55
+
56
+
57
+ # Команда, которая будет выполнена при старте контейнера
58
+ # В твоём случае запускаем app.py
59
+ CMD ["python", "app.py"]
README.md CHANGED
@@ -1,4 +1,7 @@
1
  ---
 
 
 
2
  title: MNEMO OCR Demo
3
  emoji: 🔍
4
  sdk: gradio
 
1
  ---
2
+ sdk: docker
3
+ app_port: 7860
4
+ ---
5
  title: MNEMO OCR Demo
6
  emoji: 🔍
7
  sdk: gradio