Trisha Tomy
Add git to Dockerfile for proxy-lite installation
f5ca79c
raw
history blame
2.41 kB
# Dockerfile
# Use a Python base image that is compatible with Playwright's system dependencies
FROM python:3.9-slim-buster
# Set the working directory inside the container
WORKDIR /app
# Install system dependencies required by Playwright's Chromium browser
# These are common dependencies for running headless Chrome/Chromium.
# This list might need minor adjustments based on specific runtime errors.
RUN apt-get update && apt-get install -y \
# Core libraries for graphics/rendering
fonts-liberation \
libappindicator3-1 \
libasound2 \
libatk-bridge2.0-0 \
libatk1.0-0 \
libatspi2.0-0 \
libcairo2 \
libcups2 \
libdbus-1-3 \
libdrm2 \
libgdk-pixbuf2.0-0 \
libglib2.0-0 \
libgtk-3-0 \
libnspr4 \
libnss3 \
libpangocairo-1.0-0 \
libxcomposite1 \
libxdamage1 \
libxext6 \
libxfixes3 \
libxrandr2 \
libxrender1 \
libxss1 \
libxtst6 \
# Specific to Chromium/GPU (even if not using GPU, these are for display stack)
libgbm-dev \
libasound2-dev \
# xvfb provides a virtual display server, often necessary for headless browsers
xvfb \
# Ensure Chromium is installed on the system (Playwright uses its own, but sometimes useful)
chromium \
git \
# Clean up apt caches to reduce image size
&& rm -rf /var/lib/apt/lists/*
# Copy Python dependencies and install them
# This layer is cached efficiently if requirements.txt doesn't change
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Copy your application code into the container
COPY . .
# Install Playwright browser binaries within the container
# This downloads Chromium into the container's Playwright-managed location.
RUN playwright install chromium
# Set environment variables for Playwright
# PLAYWRIGHT_BROWSERS_PATH: Tells Playwright where to find the installed browsers.
# DISPLAY, XDG_RUNTIME_DIR: Often needed for headless browser environments.
ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright/
ENV DISPLAY=:99
ENV XDG_RUNTIME_DIR=/tmp
# Expose the port your Flask app will listen on. Hugging Face Spaces expects 7860.
EXPOSE 7860
# Define the command to run your Flask application using Gunicorn for production
# Hugging Face Spaces will execute this command to start your web service.
CMD exec gunicorn --bind 0.0.0.0:7860 --workers 2 --worker-class gevent app:app --timeout 300