File size: 1,066 Bytes
9acbf1a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# Use a lightweight Python 3.10 base image
FROM python:3.10-slim

# 1. Install Python dependencies
RUN pip install --no-cache-dir fastapi uvicorn websockets playwright

# 2. Install system dependencies required by Chromium
RUN playwright install-deps chromium

# 3. Create a non-root user (UID 1000) as required by Hugging Face Spaces
RUN useradd -m -u 1000 user

# 4. Create the /app directory and set ownership BEFORE switching users
RUN mkdir -p /app/static && chown -R user:user /app

# 5. Switch to the non-root user
USER user

# 6. Install Chromium as the non-root user (installs to their ~/.cache)
RUN playwright install chromium

# 7. Set working directory
WORKDIR /app

# 8. Copy application files with proper user ownership
COPY --chown=user:user browser_server.py /app/
COPY --chown=user:user static/browser.html /app/static/

# 9. Expose the Hugging Face Spaces default port
EXPOSE 7860

# 10. Start the server using Uvicorn directly
# This binds it to HF's required port 7860.
CMD ["uvicorn", "browser_server:app", "--host", "0.0.0.0", "--port", "7860"]