# syntax=docker/dockerfile:1.6
FROM python:3.11-slim-bookworm

ARG PUID=1000
ARG PGID=1000
ARG TZ=Asia/Tokyo

ENV DEBIAN_FRONTEND=noninteractive \
    PYTHONUNBUFFERED=1 \
    PIP_NO_CACHE_DIR=1 \
    TZ=${TZ} \
    DISPLAY=:99 \
    HOME=/app \
    CHROME_BIN=/usr/bin/chromium \
    CHROMEDRIVER_PATH=/usr/bin/chromedriver

# 依存パッケージ
RUN apt-get update && apt-get install -y --no-install-recommends \
        chromium chromium-driver \
        xvfb x11vnc fluxbox \
        novnc websockify \
        fonts-ipafont fonts-noto-cjk \
        supervisor \
        curl ca-certificates tzdata \
        dumb-init \
    && ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime \
    && rm -rf /var/lib/apt/lists/*

# 非 root ユーザ作成（ホストと uid/gid を合わせる）
RUN groupadd -g ${PGID} scraper && \
    useradd -u ${PUID} -g ${PGID} -m -d /home/scraper -s /bin/bash scraper && \
    mkdir -p /app /var/log/supervisor /var/run/supervisor && \
    chown -R scraper:scraper /app /var/log/supervisor /var/run/supervisor

# 共通 Python 依存 + FastAPI 制御プレーン
COPY docker/scraper/requirements.txt /tmp/requirements.txt
COPY docker/scraper/api/requirements.txt /tmp/api-requirements.txt
RUN pip install --no-cache-dir -r /tmp/requirements.txt -r /tmp/api-requirements.txt \
    && rm /tmp/requirements.txt /tmp/api-requirements.txt

# supervisor / entrypoint / ラッパーを配置
COPY docker/scraper/supervisord.conf /etc/supervisor/supervisord.conf
COPY docker/scraper/entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh

WORKDIR /app
EXPOSE 6080 8001

HEALTHCHECK --interval=30s --timeout=10s --retries=3 --start-period=30s \
    CMD curl -f http://localhost:6080/vnc.html || exit 1

ENTRYPOINT ["/usr/bin/dumb-init", "--"]
CMD ["/usr/local/bin/entrypoint.sh"]
