Trisha Tomy
moved around perm workaround
dab2696
# Use an official Playwright Docker image for Python, matching your Playwright version and Debian base
FROM mcr.microsoft.com/playwright/python:v1.53.0-noble
# Set the working directory inside the container
WORKDIR /app
# The official Playwright image comes with most necessary system dependencies,
# so we only need to add git for proxy-lite and potentially any very specific missing libs.
# Removing the extensive list as it's largely redundant with the Playwright base image.
RUN apt-get update && apt-get install -y \
git \
xvfb \
# Clean up apt caches to reduce image size
&& rm -rf /var/lib/apt/lists/*
# Copy common Python dependencies first (needed for pip installs)
COPY requirements.txt .
# Copy your Flask application code (app.py) and other project files.
COPY . .
# --- START: Directory permission workaround ---
# Create the directory proxy-lite's recorder insists on writing to
# and grant full permissions. This addresses the PermissionError.
# This line creates the directory *directly* under /app, which is now the correct path
RUN mkdir -p /app/local_trajectories \
&& chmod -R 777 /app/local_trajectories
# --- END: Directory permission workaround ---
# Upgrade pip, setuptools, and wheel for a robust Python build environment.
RUN pip install --no-cache-dir --upgrade pip setuptools wheel
# Install your local proxy-lite package in editable mode.
RUN pip install --no-cache-dir --no-input -e .
# Install the rest of the Python dependencies from requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# Set environment variables required for Playwright at runtime
ENV DISPLAY=:99
ENV XDG_RUNTIME_DIR=/tmp
# Removed PLAYWRIGHT_BROWSERS_PATH and PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD
# as the official Playwright image manages these internally, defaulting to /ms-playwright.
# --- Debugging: Check Playwright version and browser installation (moved AFTER install in the original setup) ---
# Now checking the default Playwright browser installation path /ms-playwright
RUN echo "--- Checking Playwright Version (from base image) ---"
RUN python -m playwright --version
RUN echo "--- Listing Playwright Browser Cache (Recursive, from base image) ---"
RUN ls -alR /ms-playwright/
RUN echo "-----------------------------------"
# --- End Debugging ---
# Expose the port your Flask app will listen on. Hugging Face Spaces requires 7860.
EXPOSE 7860
# Define the command to run your Flask application using Gunicorn for production.
CMD exec gunicorn --bind 0.0.0.0:7860 --workers 2 --worker-class gevent app:app --timeout 300