# syntax=docker/dockerfile:1
#
# Multi-stage build on Debian Bullseye (glibc 2.31)
# Compatible with most Linux distros released after 2020.
#
# Usage:
# docker buildx build -t trojan-rs .
# docker buildx build --output type=local,dest=out . # extract binary to ./out/
# ── Stage 1: Build (Debian Bullseye, glibc 2.31) ───────────────
FROM rust:1-bullseye AS builder
RUN apt-get update && apt-get install -y --no-install-recommends \
pkg-config libssl-dev perl make \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /src
COPY . .
RUN cargo build --release --features cert
# ── Stage 2: Runtime ────────────────────────────────────────────
FROM debian:bullseye-slim AS runtime
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
COPY --from=builder /src/target/release/trojan /usr/local/bin/trojan
ENTRYPOINT ["trojan"]
# ── Stage 3: Export (binary only) ──────────────────────────────
FROM scratch AS export
COPY --from=builder /src/target/release/trojan /trojan