# syntax=docker/dockerfile:1

FROM python:3.12-alpine

# Standard-library only — no requirements.txt needed. ca-certificates is
# required so ssl.create_default_context() can validate the target's
# certificate chain when checking SSL expiry.
RUN apk add --no-cache ca-certificates && update-ca-certificates

# Run as a non-root user
RUN addgroup -S monitor && adduser -S monitor -G monitor

WORKDIR /app

COPY monitor.py /app/monitor.py
COPY Entrypoint.sh /app/entrypoint.sh
COPY index.html /app/web/index.html

RUN chmod +x /app/entrypoint.sh \
    && mkdir -p /app/web/data \
    && chown -R monitor:monitor /app

USER monitor

# Defaults — override any of these at `docker run` / platform deploy time.
ENV TARGET_URL="https://mithal.space" \
    SEARCH_PATH="/search?q=test" \
    CHECK_INTERVAL=60 \
    RETENTION_HOURS=24 \
    REQUEST_TIMEOUT=10 \
    DATA_FILE="/app/web/data/metrics.json" \
    WEB_DIR="/app/web" \
    PORT=8080

EXPOSE 8080

HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 \
    CMD python3 -c "import urllib.request,sys; sys.exit(0) if urllib.request.urlopen('http://127.0.0.1:${PORT}/', timeout=3).status==200 else sys.exit(1)"

ENTRYPOINT ["/app/entrypoint.sh"]