Cybersecurity-Projects/PROJECTS/intermediate/ja3-ja4-tls-fingerprinting/infra/docker/tlsfp.prod

52 lines
1.7 KiB
Plaintext

# =============================================================================
# ©AngelaMos | 2026
# tlsfp.prod
# =============================================================================
# Production Dockerfile: builds the tlsfp binary, ships a slim runtime.
# The pcap crate links libpcap, so the builder needs libpcap-dev and the
# runtime needs libpcap0.8. rusqlite is bundled, so no system SQLite.
# =============================================================================
# syntax=docker/dockerfile:1
# ============================================================================
# BUILD STAGE
# ============================================================================
FROM rust:1-bookworm AS builder
RUN apt-get update \
&& apt-get install -y --no-install-recommends libpcap-dev \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /build
COPY Cargo.toml Cargo.lock ./
COPY crates ./crates
RUN --mount=type=cache,target=/usr/local/cargo/registry \
--mount=type=cache,target=/build/target \
cargo build --release --bin tlsfp \
&& cp target/release/tlsfp /usr/local/bin/tlsfp \
&& strip /usr/local/bin/tlsfp
# ============================================================================
# RUNTIME STAGE
# ============================================================================
FROM debian:bookworm-slim AS runtime
RUN apt-get update \
&& apt-get install -y --no-install-recommends libpcap0.8 ca-certificates \
&& rm -rf /var/lib/apt/lists/* \
&& useradd --system --uid 10001 --no-create-home tlsfp \
&& mkdir -p /data \
&& chown tlsfp:tlsfp /data
COPY --from=builder /usr/local/bin/tlsfp /usr/local/bin/tlsfp
USER tlsfp
WORKDIR /data
EXPOSE 8080
ENTRYPOINT ["tlsfp"]
CMD ["serve", "0.0.0.0:8080"]