f0a1552
ZhenYi
feat(chat): add chat module with room management, message handling, and session revocation
f0a1552
# syntax=docker/dockerfile:1
FROM rust:1-bookworm AS builder
RUN apt-get update && apt-get install -y --no-install-recommends \
pkg-config \
libssl-dev \
cmake \
perl \
git \
curl \
ca-certificates \
unzip \
&& rm -rf /var/lib/apt/lists/*
RUN curl -fsSL https://bun.sh/install | bash
ENV BUN_INSTALL=/root/.bun
ENV PATH=$BUN_INSTALL/bin:$PATH
WORKDIR /build
COPY Cargo.toml Cargo.lock ./
COPY lib ./lib
COPY app ./app
COPY web ./web
COPY admin ./admin
RUN --mount=type=cache,target=/usr/local/cargo/registry \
--mount=type=cache,target=/usr/local/cargo/git \
--mount=type=cache,target=/build/target \
cargo build --release --workspace --bins && \
mkdir -p /out && \
for b in apihost githost synchost mails migrate openapi im adminhost; do \
cp "target/release/$b" /out/; \
done
########## runtime ##########
FROM debian:bookworm-slim
# git: githost/synchost spawn system git; openssh-client: ssh-keygen for host key
RUN apt-get update && apt-get install -y --no-install-recommends \
git \
ca-certificates \
libssl3 \
openssh-client \
&& rm -rf /var/lib/apt/lists/* \
&& useradd --system --create-home --uid 10001 gitdata \
&& mkdir -p /opt/gitdata/repos /opt/gitdata/objects \
&& chown -R gitdata:gitdata /opt/gitdata
WORKDIR /app
COPY --chown=gitdata:gitdata config/default.toml config/default.toml
COPY --from=builder /out/apihost /out/githost /out/synchost /out/mails /out/migrate /out/openapi /out/im /out/adminhost /usr/local/bin/
USER gitdata
EXPOSE 3000 9418 22 3001 3002 3003 3004
CMD ["apihost"]