# 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"]