rustpbx 0.3.16

A SIP PBX implementation in Rust
Documentation
FROM docker.m.daocloud.io/library/rust:1.91-bookworm AS rust-builder
RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list.d/debian.sources
RUN apt-get update && apt-get install -y libasound2-dev libopus-dev cmake
RUN mkdir /build
RUN mkdir -p .cargo && echo '[source.crates-io]\nreplace-with = "rsproxy-sparse"\n[source.rsproxy-sparse]\nregistry = "sparse+https://rsproxy.cn/index/"' > .cargo/config.toml
ADD . /build/
WORKDIR /build
RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN --mount=type=cache,target=/build/.cargo/registry \
    --mount=type=cache,target=/build/target/release/incremental\
    --mount=type=cache,target=/build/target/release/build\
    cargo build --features commerce --release --bin rustpbx --bin sipflow

FROM docker.m.daocloud.io/library/debian:bookworm
LABEL maintainer="admin@miuda.ai"
RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list.d/debian.sources
RUN --mount=type=cache,target=/var/apt apt-get update && apt-get install -y ca-certificates tzdata libopus0
ENV DEBIAN_FRONTEND=noninteractive
ENV LANG=C.UTF-8

WORKDIR /app
COPY --from=rust-builder /build/static /app/static
COPY --from=rust-builder /build/src/addons/acme/static /app/static/acme
COPY --from=rust-builder /build/src/addons/transcript/static /app/static/transcript
COPY --from=rust-builder /build/src/addons/queue/static /app/static/queue

COPY --from=rust-builder /build/target/release/rustpbx /app/rustpbx
COPY --from=rust-builder /build/target/release/sipflow /app/sipflow
COPY --from=rust-builder /build/templates /app/templates
COPY --from=rust-builder /build/src/addons/acme/templates /app/templates/acme
COPY --from=rust-builder /build/src/addons/archive/templates /app/templates/archive
COPY --from=rust-builder /build/src/addons/queue/templates /app/templates/queue
COPY --from=rust-builder /build/src/addons/transcript/templates /app/templates/transcript
COPY --from=rust-builder /build/config/sounds /app/sounds

COPY --from=rust-builder /build/src/addons/wholesale/templates /app/templates/wholesale
COPY --from=rust-builder /build/src/addons/wholesale/static /app/static/wholesale

ENTRYPOINT ["/app/rustpbx"]