ab-av1 / Dockerfile
opex792's picture
Update Dockerfile
9808f92 verified
# Используем официальный образ 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"]