gitdataai/docker/gitserver.Dockerfile
2026-04-14 19:02:01 +08:00

42 lines
1.1 KiB
Docker

# ---- 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/gitserver/ apps/gitserver/
RUN cargo fetch
RUN --mount=type=cache,target=/usr/local/cargo/registry \
--mount=type=cache,target=/usr/local/cargo/git \
--mount=type=cache,target=target \
cargo build --release --package gitserver --target ${TARGET}
# ---- 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"]