62 lines
2.3 KiB
Docker
62 lines
2.3 KiB
Docker
FROM apache/airflow:2.10.5
|
|
ENV AIRFLOW_VERSION=2.10.5
|
|
|
|
WORKDIR /app
|
|
|
|
# Install system dependencies
|
|
USER root
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends \
|
|
vim \
|
|
mc \
|
|
jq \
|
|
build-essential \
|
|
python3-dev \
|
|
wget \
|
|
tar \
|
|
xz-utils && \
|
|
apt-get clean && \
|
|
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/man /usr/share/doc /usr/share/doc-base
|
|
|
|
# Download and install custom FFmpeg build from yt-dlp's recommended source
|
|
RUN FFMPEG_URL="https://github.com/yt-dlp/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-linux64-gpl.tar.xz" && \
|
|
echo "Downloading FFmpeg from $FFMPEG_URL" && \
|
|
wget -qO /tmp/ffmpeg.tar.xz "$FFMPEG_URL" && \
|
|
mkdir -p /opt/ffmpeg && \
|
|
tar -xf /tmp/ffmpeg.tar.xz -C /opt/ffmpeg --strip-components=1 && \
|
|
ln -sf /opt/ffmpeg/bin/ffmpeg /usr/local/bin/ffmpeg && \
|
|
ln -sf /opt/ffmpeg/bin/ffprobe /usr/local/bin/ffprobe && \
|
|
rm -rf /tmp/ffmpeg.tar.xz && \
|
|
ffmpeg -version
|
|
|
|
# Ensure proper permissions, aligning GID with docker-compose.yaml (1001)
|
|
RUN groupadd -g 1001 airflow && \
|
|
usermod -a -G airflow airflow && \
|
|
chown -R airflow:1001 /app
|
|
|
|
# Switch to airflow user for package installation
|
|
USER airflow
|
|
|
|
# Install base Airflow dependencies
|
|
RUN pip install --no-cache-dir \
|
|
"apache-airflow==${AIRFLOW_VERSION}" apache-airflow-providers-docker apache-airflow-providers-http
|
|
|
|
# --- Install the custom yt_ops_services package ---
|
|
# Copy all the necessary source code for the package.
|
|
# The deploy script ensures these files are in the build context.
|
|
COPY --chown=airflow:airflow setup.py ./
|
|
COPY --chown=airflow:airflow VERSION ./
|
|
COPY --chown=airflow:airflow yt_ops_services ./yt_ops_services/
|
|
COPY --chown=airflow:airflow server_fix ./server_fix/
|
|
COPY --chown=airflow:airflow thrift_model ./thrift_model/
|
|
COPY --chown=airflow:airflow pangramia ./pangramia/
|
|
|
|
# Install the package in editable mode. This runs setup.py and installs all dependencies
|
|
# listed in `install_requires`, making the `yt_ops_services` module available everywhere.
|
|
RUN pip install --no-cache-dir -e .
|
|
|
|
# Copy token generator scripts and utils with correct permissions
|
|
COPY --chown=airflow:airflow generate_tokens_direct.mjs ./
|
|
COPY --chown=airflow:airflow utils ./utils/
|
|
COPY --chown=airflow:airflow token_generator ./token_generator/
|