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"]
|