File size: 2,716 Bytes
c894916
 
 
 
 
 
 
 
 
 
b25c42e
c894916
 
b25c42e
c894916
 
 
b25c42e
f4016b3
b25c42e
c894916
b25c42e
f4016b3
b25c42e
c894916
b25c42e
 
 
c894916
 
 
 
 
5ddc44b
 
c894916
 
 
 
 
f4016b3
 
c894916
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b25c42e
c894916
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
54
55
56
57
58
59
60
61
62
# 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

# Install git and xvfb for Playwright environment
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 essential files from the repo root to /app in the container
COPY requirements.txt .
COPY app.py .

# Copy the entire 'proxy-lite-demo-v2' directory into /app/proxy-lite-demo-v2
# This ensures src, pyproject.toml, etc., are in their original nested structure within the container.
COPY proxy-lite-demo-v2 /app/proxy-lite-demo-v2/

# Copy the 'proxy-lite-work' directory if it's needed by the app
# (Based on your tree, this is at the root of your repo)
COPY proxy-lite-work /app/proxy-lite-work/

# --- IMPORTANT: Add proxy-lite-demo-v2/src to PYTHONPATH ---
# This is crucial so that 'app.py' (now at /app) can find 'from proxy_lite import ...'
ENV PYTHONPATH=/app/proxy-lite-demo-v2/src:$PYTHONPATH

# --- 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/proxy-lite-demo-v2/local_trajectories \
    && chmod -R 777 /app/proxy-lite-demo-v2/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 all Python dependencies from requirements.txt, which now includes the editable install
# of proxy-lite from its correct nested path.
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

# --- Debugging: Check Playwright version and browser installation ---
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.
# This assumes app.py is at the root of /app, which is true because we copied it there.
CMD exec gunicorn --bind 0.0.0.0:7860 --workers 2 --worker-class gevent app:app --timeout 300