python / Dockerfile
broadfield-dev's picture
Update Dockerfile
cbff5ad verified
# 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