# ---- Stage 1: Build ---- FROM rust:1.94-bookworm AS builder ARG BUILD_TARGET=x86_64-unknown-linux-gnu ENV TARGET=${BUILD_TARGET} RUN apt-get update && apt-get install -y --no-install-recommends \ pkg-config libssl-dev libgit2-dev zlib1g-dev libclang-dev \ gcc g++ make \ && rm -rf /var/lib/apt/lists/* WORKDIR /build COPY Cargo.toml Cargo.lock ./ COPY libs/ libs/ COPY apps/ apps/ RUN cargo fetch RUN cargo build --release --package gitserver --target ${TARGET} -j $(nproc) # ---- Stage 2: Runtime ---- FROM debian:bookworm-slim AS runtime RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates libssl3 openssh-server \ && rm -rf /var/lib/apt/lists/* # SSH requires host keys and proper permissions RUN mkdir -p /run/sshd && \ ssh-keygen -A && \ chmod 755 /etc/ssh WORKDIR /app COPY --from=builder /build/target/${TARGET}/release/gitserver /app/gitserver ENV APP_LOG_LEVEL=info ENTRYPOINT ["/app/gitserver"]