FROM debian:bullseye AS builder

# Build-time dependencies
RUN apt-get update -yqq && apt-get install -yqq \
    ca-certificates \
    build-essential \
    cmake \
    pkg-config \
    qt5-default \
    libboost-dev \
    libasound2-dev \
    libssl-dev \
    libspeechd-dev \
    libzeroc-ice-dev \
    libpulse-dev \
    libcap-dev \
    libprotobuf-dev \
    libprotoc-dev \
    protobuf-compiler \
    protobuf-compiler-grpc \
    libgrpc++-dev \
    libogg-dev \
    libavahi-compat-libdnssd-dev \
    libsndfile1-dev \
    libbz2-dev \
    libxi-dev \
    git --no-install-recommends

WORKDIR /usr/src/murmur
RUN \
    git clone https://github.com/mumble-voip/mumble.git . \
    && git checkout master \
    && git submodule init \
    && git submodule update

WORKDIR /usr/src/murmur/build
RUN \
    cmake -Dclient=OFF -DCMAKE_BUILD_TYPE=Release -Dgrpc=ON .. \
    && make -j $(nproc)


FROM debian:bullseye
EXPOSE 64738/tcp 64738/udp

ENV HOME /home/user
RUN useradd --create-home --home-dir $HOME user \
    && chown -R user:user $HOME

WORKDIR $HOME

# Runtime dependencies
RUN apt-get update && apt-get install -yqq \
    ca-certificates \
    'libprotobuf[0-9]+$' \
    libqt5core5a \
    libqt5dbus5 \
    libqt5xml5 \
    libqt5sql5 \
    libqt5network5 \
    libcap2 \
    'libgrpc[0-9]+$' \
    libgrpc++1 \
    libzeroc-ice3.7 \
    && apt-get clean && rm -rf /var/lib/apt/lists/*

COPY --from=builder /usr/src/murmur/release/murmurd /usr/bin/murmurd

USER user

RUN mkdir /data
COPY --from=builder --chown=user:user /usr/src/murmur/scripts/murmur.ini /data/murmur.ini
VOLUME ["/data"]

ENTRYPOINT [ "/usr/bin/murmurd" ]
CMD [ "-fg", "-v", "-ini", "/data/murmur.ini" ]