# 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"]
