FROM python:3.14-slim WORKDIR /app RUN apt-get update && apt-get install -y --no-install-recommends \ tzdata \ xvfb \ xauth \ ca-certificates \ curl \ && rm -rf /var/lib/apt/lists/* COPY pyproject.toml uv.lock /app/ RUN pip install --no-cache-dir uv RUN uv sync --frozen --no-dev RUN /app/.venv/bin/python -m playwright install --with-deps chromium COPY src/*.py /app/ ENV PYTHONUNBUFFERED=1 ENV PORT=8000 ENV DATA_DIR=/data ENV PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 VOLUME ["/data"] EXPOSE 8000 STOPSIGNAL SIGINT COPY entrypoint.sh /entrypoint.sh CMD ["/entrypoint.sh"]