File size: 1,903 Bytes
d1bc328
 
867f9ba
9808f92
 
d1bc328
 
867f9ba
d1bc328
 
57ccc22
d1bc328
 
9808f92
d1bc328
 
 
9808f92
8baa346
d1bc328
 
7689cdf
 
d1bc328
9808f92
4a84fea
 
111fc06
d1bc328
4a84fea
 
 
111fc06
d1bc328
4a84fea
 
111fc06
4a84fea
867f9ba
5fa3f61
d1bc328
4a84fea
 
 
d1bc328
4a84fea
9808f92
 
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
# Используем официальный образ Python 3.10
FROM python:3.10-slim

# --- Шаг 1: Установка системных зависимостей и FFMPEG от имени ROOT ---
# Устанавливаем утилиты для скачивания, распаковки и mediainfo.
RUN apt-get update && apt-get install -y \
    curl \
    build-essential \
    pkg-config \
    libssl-dev \
    git \
    wget \
    xz-utils \
    mediainfo \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Скачиваем и устанавливаем последнюю статическую сборку FFmpeg
RUN FFMPEG_URL="https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n7.1-latest-linux64-gpl-7.1.tar.xz" && \
    wget "$FFMPEG_URL" -O ffmpeg.tar.xz && \
    tar -xf ffmpeg.tar.xz && \
    mv ./ffmpeg-n7.1-latest-linux64-gpl-7.1/bin/* /usr/local/bin/ && \
    rm -rf ffmpeg.tar.xz ffmpeg-n7.1-latest-linux64-gpl-7.1

# --- Шаг 2: Создание и переключение на пользователя 'user' ---
RUN useradd -m -u 1000 user
USER user

# --- Шаг 3: Настройка окружения для 'user' ---
ENV HOME=/home/user
WORKDIR $HOME/app
ENV PATH="$HOME/.cargo/bin:$HOME/.local/bin:${PATH}"

# --- Шаг 4: Установка зависимостей от имени 'user' ---
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
RUN cargo install --git https://github.com/alexheretic/ab-av1

COPY --chown=user ./requirements.txt .
RUN pip install --no-cache-dir --user -r requirements.txt

# --- Шаг 5: Копирование кода приложения ---
COPY --chown=user ./app ./app
RUN mkdir -p data/uploads data/outputs data/logs

# --- Шаг 6: Запуск приложения ---
EXPOSE 7860
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "7860"]