Files
ja4-platform/services/ja4ebpf/Dockerfile
toto 9734e21fe3 chore: suppression des services obsolètes (sentinel, correlator, mod-reqin-log)
Remplacés par l'agent ja4ebpf (eBPF CO-RE). Nettoyage complet :

Supprimé :
- old/ (archive de l'ancienne architecture)
- services/correlator/ (logcorrelator Go)
- services/sentinel/ (capture pcap Go)
- services/mod-reqin-log/ (module Apache C)
- shared/go/ja4common/ (lib Go partagée — plus importée par ja4ebpf)
- tests/integration/platform/ (test correlator+sentinel+httpd)
- tests/integration/docker-compose.yml (compose ancienne archi)
- tests/integration/run-tests.sh (runner correlator/sentinel)
- tests/integration/verify_mvs.py (script orphelin)

Nettoyé :
- go.work : retire ./shared/go/ja4common
- services/ja4ebpf/go.mod : retire replace ja4common (jamais importé)
- services/ja4ebpf/Dockerfile* : retire les COPY ja4common inutiles
- Makefile : retire test-ja4common-python, test-integration*, targets obsolètes
- tests/integration/README.md : réécrit pour l'architecture ja4ebpf

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-12 01:48:14 +02:00

78 lines
2.3 KiB
Docker

# =============================================================================
# Dockerfile — Construction multi-stage du démon ja4ebpf
# Stage 1 : compilation eBPF (Rocky Linux 9 + clang + bpftool)
# Stage 2 : compilation Go + génération des bindings bpf2go
# Stage 3 : image finale minimale (Rocky Linux 9 minimal)
# =============================================================================
# --- Stage 1 : eBPF builder ---
FROM rockylinux:9 AS ebpf-builder
# Installation des outils de compilation eBPF
# libbpf-devel est dans le dépôt CRB (CodeReady Builder) de Rocky Linux 9
RUN dnf install -y epel-release dnf-plugins-core && \
dnf config-manager --enable crb && \
dnf install -y \
clang \
llvm \
bpftool \
kernel-headers \
libbpf-devel \
make \
&& \
dnf clean all
WORKDIR /build
# Copier les sources eBPF
COPY services/ja4ebpf/bpf/ ./bpf/
# Créer le répertoire des headers et générer vmlinux.h depuis le BTF du kernel
RUN mkdir -p bpf/headers && \
bpftool btf dump file /sys/kernel/btf/vmlinux format c > bpf/headers/vmlinux.h 2>/dev/null || \
echo "/* vmlinux.h placeholder — généré au runtime */" > bpf/headers/vmlinux.h
# --- Stage 2 : Go builder ---
FROM rockylinux:9 AS go-builder
# Installation de Go et des outils nécessaires
# libbpf-devel est dans le dépôt CRB (CodeReady Builder) de Rocky Linux 9
RUN dnf install -y epel-release dnf-plugins-core && \
dnf config-manager --enable crb && \
dnf install -y \
golang \
clang \
llvm \
libbpf-devel \
kernel-headers \
bpftool \
make \
&& \
dnf clean all
WORKDIR /build
# Copier les headers eBPF générés au stage précédent
COPY --from=ebpf-builder /build/bpf/headers/ ./services/ja4ebpf/bpf/headers/
COPY services/ja4ebpf/ ./services/ja4ebpf/
WORKDIR /build/services/ja4ebpf
# Générer les bindings Go depuis le bytecode eBPF
RUN go generate ./internal/loader/
# Compilation du binaire final
RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o /out/ja4ebpf ./cmd/ja4ebpf/
# --- Stage 3 : image finale ---
FROM rockylinux:9-minimal AS final
# Copier uniquement le binaire compilé
COPY --from=go-builder /out/ja4ebpf /usr/local/bin/ja4ebpf
# Créer le répertoire de configuration
RUN mkdir -p /etc/ja4ebpf
ENTRYPOINT ["/usr/local/bin/ja4ebpf"]