|
|
FROM python:3.11-slim-bullseye |
|
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive |
|
|
|
|
|
|
|
|
RUN apt-get update && apt-get install -y \ |
|
|
|
|
|
xvfb \ |
|
|
x11vnc \ |
|
|
x11-utils \ |
|
|
x11-xserver-utils \ |
|
|
matchbox-window-manager \ |
|
|
|
|
|
xdotool \ |
|
|
libxtst6 \ |
|
|
libxrandr2 \ |
|
|
|
|
|
libavcodec-dev \ |
|
|
libavdevice-dev \ |
|
|
libavfilter-dev \ |
|
|
libavformat-dev \ |
|
|
libavutil-dev \ |
|
|
libswscale-dev \ |
|
|
libswresample-dev \ |
|
|
libvpx-dev \ |
|
|
libopus-dev \ |
|
|
libffi-dev \ |
|
|
libssl-dev \ |
|
|
|
|
|
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 \ |
|
|
|
|
|
wget \ |
|
|
curl \ |
|
|
gnupg \ |
|
|
procps \ |
|
|
&& rm -rf /var/lib/apt/lists/* |
|
|
|
|
|
|
|
|
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"] |