WebP / Dockerfile
Alvin3y1's picture
Create Dockerfile
fb34a06 verified
FROM python:3.11-slim-bullseye
ENV DEBIAN_FRONTEND=noninteractive
# 1. Install System Dependencies
RUN apt-get update && apt-get install -y \
# --- VNC & Display Management ---
xvfb \
x11vnc \
x11-utils \
x11-xserver-utils \
matchbox-window-manager \
# --- Input & Protocol Libs ---
xdotool \
libxtst6 \
libxrandr2 \
# --- WebRTC / AIORTC Dependencies ---
libavcodec-dev \
libavdevice-dev \
libavfilter-dev \
libavformat-dev \
libavutil-dev \
libswscale-dev \
libswresample-dev \
libvpx-dev \
libopus-dev \
libffi-dev \
libssl-dev \
# --- Browser Dependencies ---
libxcomposite1 \
libxcursor1 \
libxdamage1 \
libxi6 \
libnss3 \
libatk1.0-0 \
libatk-bridge2.0-0 \
libcups2 \
libdrm2 \
libgbm1 \
libasound2 \
libpangocairo-1.0-0 \
libgtk-3-0 \
fonts-liberation \
fonts-noto-color-emoji \
# --- Utilities ---
wget \
curl \
gnupg \
procps \
&& rm -rf /var/lib/apt/lists/*
# 2. Install Opera Browser
RUN curl -fsSL https://deb.opera.com/archive.key | gpg --dearmor -o /usr/share/keyrings/opera-browser-keyring.gpg && \
echo "deb [signed-by=/usr/share/keyrings/opera-browser-keyring.gpg] https://deb.opera.com/opera-stable/ stable non-free" \
| tee /etc/apt/sources.list.d/opera-stable.list && \
apt-get update && \
apt-get install -y opera-stable && \
rm -rf /var/lib/apt/lists/*
# 3. Setup User
# Note: x11vnc works best when run by the same user who owns the X session
RUN useradd -m -u 1000 user
USER user
ENV HOME=/home/user \
PATH=/home/user/.local/bin:$PATH
WORKDIR $HOME/app
# 4. Install Python Dependencies
# Ensure requirements.txt contains: aiortc, aiohttp
COPY --chown=user:user requirements.txt .
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r requirements.txt
# 5. Copy Application
COPY --chown=user:user . .
# 6. Create Directories
RUN mkdir -p $HOME/opera-data
# 7. Environment Config
ENV DISPLAY=:99 \
RESOLUTION=1280x720 \
PYTHONUNBUFFERED=1
EXPOSE 7860
CMD ["python", "app.py"]