diff --git a/Dockerfile b/Dockerfile index 6f276bf..0e67a8f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -55,7 +55,11 @@ ARG MUMBLE_VERSION=latest ARG MUMBLE_BUILD_NUMBER="" ARG MUMBLE_CMAKE_ARGS="" -RUN /mumble/scripts/clone.sh && /mumble/scripts/build.sh +# Clone the repo, build it and finally copy the default server ini file. Since this file may be at different locations and Docker +# doesn't support conditional copies, we have to ensure that regardless of where the file is located in the repo, it will end +# up at a unique path in our build container to be copied further down. +RUN /mumble/scripts/clone.sh && /mumble/scripts/build.sh \ +&& /mumble/scripts/copy_one_of.sh ./scripts/murmur.ini ./auxiliary_files/mumble-server.ini default_config.ini @@ -66,7 +70,7 @@ ARG MUMBLE_GID=1000 RUN groupadd --gid $MUMBLE_GID mumble && useradd --uid $MUMBLE_UID --gid $MUMBLE_GID mumble COPY --from=build /mumble/repo/build/mumble-server /usr/bin/mumble-server -COPY --from=build /mumble/repo/scripts/murmur.ini /etc/mumble/bare_config.ini +COPY --from=build /mumble/repo/default_config.ini /etc/mumble/bare_config.ini RUN mkdir -p /data && chown -R mumble:mumble /data && chown -R mumble:mumble /etc/mumble USER mumble diff --git a/entrypoint.sh b/entrypoint.sh index 92c4d6a..0868379 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -98,7 +98,7 @@ else # Apply default settings if they're missing - set_config "database" "${DATA_DIR}/murmur.sqlite" true + set_config "database" "${DATA_DIR}/mumble-server.sqlite" true set_config "ice" "\"tcp -h 127.0.0.1 -p 6502\"" true set_config "welcometext" "\"
Welcome to this server, running the official Mumble Docker image.
Enjoy your stay!
\"" true set_config "port" 64738 true diff --git a/scripts/copy_one_of.sh b/scripts/copy_one_of.sh new file mode 100755 index 0000000..f0fa042 --- /dev/null +++ b/scripts/copy_one_of.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +# This script can be used to copy the first existing file to the +# target destination. +# Thus +# copy_one_of.sh a b c +# copies either a or b to c. The first of the target files that +# exists will be copied. The rest will be ignored. + +set -e +set -x + +if [[ "$#" < 2 ]]; then + >&2 echo "Too few arguments - expected at least two" + exit 1 +fi + +parameters=( "$@" ) +target_file="${parameters[$(( $# - 1))]}" + +found=false + +# Make use of num. of arguments $# to iterate up to the i - 1st argument (last one is destination) +for i in $(seq 0 $(( $# - 2 )) ); do + current_file=${parameters[$i]} + + if [[ -f "$current_file" ]]; then + cp "$current_file" "$target_file" + found=true + break + fi +done + +if [[ "$found" = "false" ]]; then + >&2 echo "Did not find any of the source files - nothing was copied" + exit 1 +fi