# Multi-stage build for kez-chat-server. # # Stage 1: build the Rust binary against kez-core (path dep). The build # context must be the *repository root* (the dir that contains both # `kez-chat/` and `rust/`), not `kez-chat/` itself — see the # `docker-compose.yml` which sets `context: ..`. FROM rust:1.86-slim AS build RUN apt-get update && apt-get install -y --no-install-recommends \ pkg-config libssl-dev ca-certificates \ && rm -rf /var/lib/apt/lists/* WORKDIR /src # Copy what we need: # - rust/crates/kez-core (path dep) # - kez-chat (this project) COPY rust/ /src/rust/ COPY kez-chat/ /src/kez-chat/ WORKDIR /src/kez-chat RUN cargo build --release --bin kez-chat-server # Stage 2: minimal runtime image FROM debian:bookworm-slim RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ && rm -rf /var/lib/apt/lists/* \ && useradd -r -u 10001 -m kez COPY --from=build /src/kez-chat/target/release/kez-chat-server /usr/local/bin/kez-chat-server USER kez WORKDIR /data ENV KEZ_CHAT_BIND=0.0.0.0:6969 \ KEZ_CHAT_DB=/data/kez-chat.db \ KEZ_CHAT_SERVER=kez.lat \ KEZ_CHAT_SIG_SERVER_URL=http://sig-server:7878 \ RUST_LOG=info EXPOSE 6969 ENTRYPOINT ["/usr/local/bin/kez-chat-server"]