Spaces:
Running
Running
# Use Ubuntu 22.04 for compatibility with pygobject and toga | |
FROM ubuntu:22.04 | |
# Set environment variables | |
ENV DEBIAN_FRONTEND=noninteractive | |
ENV DISPLAY=:99 | |
ENV PATH="/home/user/.local/bin:$PATH" | |
# Install system dependencies as root | |
RUN apt-get update && apt-get install -y \ | |
python3 \ | |
python3-dev \ | |
python3-pip \ | |
python3-venv \ | |
libgirepository1.0-dev \ | |
libcairo2-dev \ | |
pkg-config \ | |
meson \ | |
ninja-build \ | |
libgtk-3-dev \ | |
xvfb \ | |
x11vnc \ | |
novnc \ | |
websockify \ | |
nginx \ | |
&& rm -rf /var/lib/apt/lists/* | |
# Create a non-root user for Hugging Face Spaces | |
RUN useradd -m -u 1000 user | |
USER user | |
WORKDIR /app | |
# Copy application files | |
COPY --chown=user . /app | |
# Create and activate a virtual environment | |
RUN python3 -m venv /venv | |
ENV PATH="/venv/bin:$PATH" | |
# Install Python dependencies | |
RUN pip install --no-cache-dir --upgrade pip && \ | |
pip install flask pygobject toga | |
# Copy Nginx configuration | |
COPY --chown=user nginx.conf /etc/nginx/nginx.conf | |
# Expose port 7860 for Hugging Face Spaces | |
EXPOSE 7860 | |
# Start Xvfb, x11vnc, noVNC, Nginx, and Flask app | |
CMD Xvfb :99 -screen 0 1024x768x16 & \ | |
x11vnc -display :99 -forever -nopw & \ | |
websockify --web /usr/share/novnc 6080 localhost:5900 & \ | |
nginx & \ | |
python3 app.py |