File size: 2,297 Bytes
dd00fd0
48a68a4
689e710
 
 
 
9459102
 
689e710
f5ca79c
dd00fd0
6da58ba
689e710
 
e36d4b5
689e710
cacfd35
e36d4b5
6170d37
 
cacfd35
 
6170d37
dd00fd0
cc42de8
cacfd35
6da58ba
689e710
 
e36d4b5
689e710
 
e36d4b5
 
 
 
 
 
 
dd00fd0
6da58ba
 
689e710
9459102
 
93b2ed3
6170d37
689e710
 
6170d37
9459102
4f40e92
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# 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.
# We only need to add git and xvfb (if not already present and needed for xvfb-run in CMD).
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 .

# --- START: Core Python and proxy-lite setup ---

# Upgrade pip, setuptools, and wheel for a robust Python build environment.
RUN pip install --no-cache-dir --upgrade pip setuptools wheel

# Install proxy-lite in "editable" mode directly from its GitHub repository.
# The Playwright base image already has Playwright installed, so this just handles proxy-lite
RUN pip install --no-cache-dir --no-input --force-reinstall -e git+https://github.com/convergence-ai/proxy-lite.git#egg=proxy-lite

# Install the rest of the Python dependencies from requirements.txt
RUN pip install --no-cache-dir -r 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.
RUN mkdir -p /app/src/proxy-lite/local_trajectories \
    && chmod -R 777 /app/src/proxy-lite/local_trajectories
# --- END: Directory permission workaround ---

# Set environment variables required for Playwright at runtime
ENV DISPLAY=:99
ENV XDG_RUNTIME_DIR=/tmp

# Removed redundant Playwright installation and debugging commands
# The base image already includes Playwright and its browsers.

# 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.
# xvfb-run is still needed if Playwright is launched in non-headless mode in app.py
CMD ["xvfb-run", "gunicorn", "--bind", "0.0.0.0:7860", "--workers", "2", "--worker-class", "gevent", "app:app", "--timeout", "300"]