sterepando commited on
Commit
a45790c
·
verified ·
1 Parent(s): 346365e

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +41 -19
Dockerfile CHANGED
@@ -1,33 +1,55 @@
 
1
  FROM python:3.11-slim
2
 
3
- WORKDIR /app
4
-
5
- # Установка зависимостей для сборки
6
  RUN apt-get update && apt-get install -y \
 
7
  git \
8
- build-essential \
9
  wget \
10
- curl \
 
 
 
11
  && rm -rf /var/lib/apt/lists/*
12
 
13
- # Установка Android NDK (нужен для кросс-компиляции)
14
- RUN wget https://dl.google.com/android/repository/android-ndk-r25c-linux.zip && \
15
- unzip android-ndk-r25c-linux.zip && \
16
- rm android-ndk-r25c-linux.zip
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
 
18
- ENV ANDROID_NDK_HOME=/app/android-ndk-r25c
19
- ENV PATH=${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin:${PATH}
20
 
21
- # Установка crossenv для кросс-компиляции Python пакетов
22
- RUN pip install crossenv cibuildwheel
 
 
 
 
23
 
24
- # Копируем requirements
25
- COPY requirements.txt .
26
- RUN pip install -r requirements.txt
27
 
28
- # Копируем скрипт сборки
29
- COPY app.py .
30
 
 
31
  EXPOSE 7860
32
 
33
- CMD ["python", "app.py"]
 
 
1
+ # Используем Python 3.11 (как в Chaquopy 15/16)
2
  FROM python:3.11-slim
3
 
4
+ # 1. Установка системных зависимостей
 
 
5
  RUN apt-get update && apt-get install -y \
6
+ curl \
7
  git \
 
8
  wget \
9
+ build-essential \
10
+ libssl-dev \
11
+ pkg-config \
12
+ unzip \
13
  && rm -rf /var/lib/apt/lists/*
14
 
15
+ # 2. Установка Rust (нужен для компиляции pydantic-core)
16
+ RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
17
+ ENV PATH="/root/.cargo/bin:${PATH}"
18
+
19
+ # 3. Установка Zig (используем как кросс-компилятор, это быстрее чем NDK)
20
+ RUN wget https://ziglang.org/download/0.13.0/zig-linux-x86_64-0.13.0.tar.xz \
21
+ && tar -xf zig-linux-x86_64-0.13.0.tar.xz \
22
+ && mv zig-linux-x86_64-0.13.0 /usr/local/zig \
23
+ && rm zig-linux-x86_64-0.13.0.tar.xz
24
+ ENV PATH="/usr/local/zig:${PATH}"
25
+
26
+ # 4. Добавляем цель сборки для Android ARM64
27
+ RUN rustup target add aarch64-linux-android
28
+
29
+ # 5. Установка инструментов сборки Python
30
+ RUN pip install maturin cargo-zigbuild
31
+
32
+ # 6. Клонируем pydantic-core (берем свежую версию)
33
+ WORKDIR /app
34
+ RUN git clone https://github.com/pydantic/pydantic-core.git
35
 
36
+ WORKDIR /app/pydantic-core
 
37
 
38
+ # 7. СБОРКА
39
+ # --release: оптимизированная версия
40
+ # --zig: использовать zig вместо gcc
41
+ # --target aarch64-linux-android: под Android ARM64
42
+ # -i python3.11: привязать к конкретной версии питона
43
+ RUN maturin build --release --zig --target aarch64-linux-android -i python3.11
44
 
45
+ # 8. Подготовка к выдаче файла
46
+ WORKDIR /app/pydantic-core/target/wheels
 
47
 
48
+ # Даем права на чтение всем (для HF user permissions)
49
+ RUN chmod -R 777 .
50
 
51
+ # Открываем порт 7860 (дефолт для Spaces)
52
  EXPOSE 7860
53
 
54
+ # Запускаем простой файловый сервер
55
+ CMD ["python", "-m", "http.server", "7860"]