FROM alpine:3.20

RUN apk add --no-cache \
    bash \
    curl \
    jq \
    bind-tools \
    iputils \
    socat \
    libcap \
    && setcap cap_net_raw+ep /usr/bin/ping 2>/dev/null || true

RUN mkdir -p /var/www/cfb \
    && chown -R nobody:nogroup /var/www/cfb

COPY --chmod=755 entrypoint.sh status-handler.sh /opt/cfb/
RUN chown -R nobody:nogroup /opt/cfb

USER nobody:nogroup
WORKDIR /opt/cfb

ENV CHECK_INTERVAL_SEC=30 \
    CHECK_MODE=ping \
    PING_COUNT=2 \
    PING_TIMEOUT_SEC=2 \
    CURL_MAX_TIME_SEC=5 \
    CURL_CONNECT_TIMEOUT_SEC=3 \
    CURL_URL_TEMPLATE='http://%s/' \
    CURL_OK_MIN=200 \
    CURL_OK_MAX=399 \
    DEFAULT_TTL=300 \
    DEFAULT_PROXIED=false \
    ENABLE_STATUS_HTTP=0 \
    STATUS_HTTP_PORT=8080 \
    STATUS_HTTP_ALLOW_IPS=""

EXPOSE 8080

HEALTHCHECK --interval=45s --timeout=5s --start-period=20s --retries=3 \
    CMD test -f /tmp/cfb.liveness && test "$(($(date +%s) - $(stat -c %Y /tmp/cfb.liveness)))" -lt 180 || exit 1

ENTRYPOINT ["/bin/bash", "/opt/cfb/entrypoint.sh"]
