webp1 / Dockerfile
Alvin3y1's picture
Create Dockerfile
1946cb1 verified
FROM python:3.11-slim-bullseye
ENV DEBIAN_FRONTEND=noninteractive
# 1. Install System Dependencies
RUN apt-get update && apt-get install -y \
# --- TigerVNC Server ---
tigervnc-standalone-server \
tigervnc-tools \
# --- Display & Input Libs ---
x11-utils \
x11-xserver-utils \
matchbox-window-manager \
libxtst6 \
libxrandr2 \
# --- WebRTC Dependencies ---
libavcodec-dev \
libavdevice-dev \
libavfilter-dev \
libavformat-dev \
libavutil-dev \
libswscale-dev \
libswresample-dev \
libvpx-dev \
libopus-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
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
COPY --chown=user:user requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 5. Copy Application
COPY --chown=user:user . .
# 6. Create Directories & Setup VNC Password-less
RUN mkdir -p $HOME/opera-data && \
mkdir -p $HOME/.vnc
# 7. Environment Config
ENV DISPLAY=:99 \
PYTHONUNBUFFERED=1
EXPOSE 7860
CMD ["python", "app.py"]