mumble-docker/server/Dockerfile

96 lines
2.5 KiB
Docker

FROM ubuntu:focal AS builder
# needed to install tzdata
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install --no-install-recommends -y \
ca-certificates \
git \
build-essential \
cmake \
pkg-config \
qt5-default \
libboost-dev \
libasound2-dev \
libssl-dev \
libspeechd-dev \
libzeroc-ice-dev \
libpulse-dev \
libcap-dev \
libprotobuf-dev \
protobuf-compiler \
protobuf-compiler-grpc \
libprotoc-dev \
libogg-dev \
libavahi-compat-libdnssd-dev \
libsndfile1-dev \
libgrpc++-dev \
libxi-dev \
libbz2-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /root
RUN git clone -b 1.5.x https://github.com/mumble-voip/mumble.git
WORKDIR /root/mumble
RUN git submodule update --init --recursive
WORKDIR /root/mumble/build
RUN cmake -Dclient=OFF -DCMAKE_BUILD_TYPE=Release -Dgrpc=ON .. || \
( cat \
/root/mumble/build/CMakeFiles/CMakeOutput.log \
/root/mumble/build/CMakeFiles/CMakeError.log \
&& false \
)
RUN make -j $(nproc)
# Clean distribution stage
FROM ubuntu:focal as prod
ARG DEBIAN_FRONTEND=noninteractive
ARG SUPER_USER_PASSWORD=12345678
#RUN adduser mumble
RUN apt-get update && apt-get install --no-install-recommends -y \
libcap2 \
libzeroc-ice3.7 \
'^libprotobuf[0-9]+$' \
'^libgrpc[0-9]+$' \
libgrpc++1 \
libavahi-compat-libdnssd1 \
libqt5core5a \
libqt5network5 \
libqt5sql5 \
libqt5sql5-mysql \
libqt5sql5-psql \
libqt5sql5-sqlite \
libqt5xml5 \
libqt5dbus5 \
ca-certificates \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir /opt/mumble && \
mkdir /opt/mumble/db && \
mkdir /opt/mumble/ini
COPY --from=builder /root/mumble/build/mumble-server /opt/mumble
COPY --from=builder /root/mumble/build/mumble-server.ini /opt/mumble/mumble-server.ini
RUN sed -i 's/^database=$/database=\/opt\/mumble\/db\/murmur.sqlite/' /opt/mumble/mumble-server.ini
EXPOSE 64738/tcp 64738/udp 50051
VOLUME ["/opt/mumble/ini"]
VOLUME ["/opt/mumble/db"]
WORKDIR /
CMD echo "cp -n /opt/mumble/mumble-server.ini /opt/mumble/ini/ && \\" > mumble_script.sh && \
echo "/opt/mumble/mumble-server -v -fg -ini /opt/mumble/ini/mumble-server.ini -supw $SUPER_USER_PASSWORD && \\" > mumble_script.sh && \
echo "/opt/mumble/mumble-server -v -fg -ini /opt/mumble/ini/mumble-server.ini" > mumble_script.sh && \
chmod +x mumble_script.sh && \
./mumble_script.sh
#CMD cp -n /opt/mumble/mumble-server.ini /opt/mumble/ini/ && \
# /opt/mumble/mumble-server -v -fg -ini /opt/mumble/ini/mumble-server.ini -supw $SUPER_USER_PASSWORD && \
# /opt/mumble/mumble-server -v -fg -ini /opt/mumble/ini/mumble-server.ini