ARG BASE_IMAGE=debian:trixie-slim FROM ${BASE_IMAGE} ARG DEBIAN_FRONTEND=noninteractive # Keep the runtime image small: no recommends, docs, man pages or apt cache. RUN printf '%s\n' \ 'path-exclude=/usr/share/doc/*' \ 'path-exclude=/usr/share/man/*' \ 'path-exclude=/usr/share/info/*' \ 'path-exclude=/usr/share/locale/*' \ > /etc/dpkg/dpkg.cfg.d/01_nodoc \ && apt-get update \ && apt-get install -y --no-install-recommends \ ca-certificates \ iproute2 \ python3 \ suricata \ suricata-update \ tini \ && suricata --build-info >/dev/null \ && suricata-update -V \ && apt-get clean \ && rm -rf \ /var/lib/apt/lists/* \ /var/cache/apt/* \ /usr/share/doc/* \ /usr/share/man/* \ /usr/share/info/* \ /usr/share/locale/* WORKDIR /opt/ids COPY app /opt/ids/app COPY scripts /opt/ids/scripts COPY suricata/local.rules /opt/ids/suricata/local.rules RUN chmod +x /opt/ids/scripts/*.sh \ && mkdir -p /data /var/log/suricata /var/lib/suricata/rules /run/suricata ENV PYTHONUNBUFFERED=1 \ TZSP_BIND=0.0.0.0 \ TZSP_PORT=37008 \ TAP_NAME=suritap0 \ TAP_MTU=9000 \ WEB_BIND=0.0.0.0 \ WEB_PORT=8080 \ DB_PATH=/data/ids.db \ EVE_PATH=/var/log/suricata/eve.json \ AUTO_BLOCK=false \ UPDATE_RULES_ON_START=false EXPOSE 37008/udp 8080/tcp ENTRYPOINT ["/usr/bin/tini", "--", "/opt/ids/scripts/entrypoint.sh"]