f09317f95b
- Dockerfile with Xvfb + x11vnc + noVNC for browser-in-a-URL - search.py auto-detects DISPLAY env to run headed vs headless - pause_for_human() function for CAPTCHA/login handoff - Facebook Marketplace search (headed mode only, needs login) - Updated README with both modes
30 lines
751 B
Docker
30 lines
751 B
Docker
FROM python:3.13-slim
|
|
|
|
# Install display and VNC deps
|
|
RUN apt-get update -qq && apt-get install -y -qq --no-install-recommends \
|
|
xvfb x11vnc websockify novnc \
|
|
libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 \
|
|
libxkbcommon0 libxcomposite1 libxdamage1 libxrandr2 libgbm1 \
|
|
libpango-1.0-0 libcairo2 libasound2 libxshmfence1 libgtk-3-0 \
|
|
fonts-liberation && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install Python deps
|
|
COPY pyproject.toml uv.lock /app/
|
|
WORKDIR /app
|
|
RUN pip install uv && uv sync --frozen
|
|
|
|
# Install Playwright Chromium
|
|
RUN uv run playwright install chromium
|
|
|
|
# Copy source
|
|
COPY . /app/
|
|
|
|
# Entrypoint script
|
|
COPY entrypoint.sh /entrypoint.sh
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
EXPOSE 6080
|
|
|
|
ENTRYPOINT ["/entrypoint.sh"]
|