# syntax=docker/dockerfile:1
#
# Runs ipabusedb-docker-reporter as a runit service under the baseimage's
# runsvinit: sleep INTERVAL seconds, report the last INTERVAL seconds of
# sshd brute-force attempts to AbuseIPDB, repeat.
#
# Run with the host's docker socket bind-mounted and the config in the
# container environment:
#
#   docker run -d --restart unless-stopped \
#     -v /var/run/docker.sock:/var/run/docker.sock \
#     -e DOCKER_CONTAINER_NAME=sshd \
#     -e IPABUSEDB_API_KEY=... \
#     -e INTERVAL=1200 \
#     git.eeqj.de/sneak/ipabusedb-docker-reporter:latest

FROM git.eeqj.de/sneak/baseimage:2026-11-05

# The reporter shells out to "docker logs", so it needs the docker CLI.
# The static binary from the official CLI image avoids pulling the whole
# docker.io package (and daemon) in via apt. Pinned to a release tag plus
# the multi-arch manifest list digest.
COPY --from=docker:29.9.3-cli@sha256:2357639ad1ea7d0194134bf3292622fd4e562483966ed674e5d7c945b5f3b28d \
    /usr/local/bin/docker /usr/local/bin/docker

WORKDIR /src
COPY go.mod go.sum ./
RUN --mount=type=cache,target=/root/go/pkg/mod go mod download
COPY *.go ./
RUN --mount=type=cache,target=/root/go/pkg/mod \
    --mount=type=cache,target=/root/.cache/go-build \
    CGO_ENABLED=0 go build -o /usr/local/bin/ipabusedb-docker-reporter .

COPY sv/ipabusedb-docker-reporter/run /etc/sv/ipabusedb-docker-reporter/run
RUN chmod +x /etc/sv/ipabusedb-docker-reporter/run \
    && ln -s /etc/sv/ipabusedb-docker-reporter /etc/service/ipabusedb-docker-reporter

# Seconds to sleep between runs; also the --since window of each run.
ENV INTERVAL=1200

WORKDIR /
