From edd234b5eb3aac74acdec07356262fd340161971 Mon Sep 17 00:00:00 2001 From: Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com> Date: Mon, 30 Sep 2024 23:33:49 +0200 Subject: [PATCH] chore(client): update Dockerfile dependencies and entrypoint script Adjust Dockerfile with additional development packages for libraries. use xvfb-run instead of xvfb. --- client/Dockerfile | 12 ++++++++++-- client/entrypoint.sh | 31 +++++++++++++++++++------------ 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/client/Dockerfile b/client/Dockerfile index 63f127c..d41598b 100644 --- a/client/Dockerfile +++ b/client/Dockerfile @@ -8,7 +8,10 @@ ARG LUAJIT_VERSION=v2.1 RUN apk add --no-cache git build-base cmake curl-dev zlib-dev zstd-dev \ sqlite-dev postgresql-dev hiredis-dev leveldb-dev jpeg-dev libpng-dev \ glfw-dev gmp-dev jsoncpp-dev libxi-dev libintl ninja ca-certificates \ - freetype-dev + freetype-dev luajit-dev gettext sdl2-dev libogg-dev libvorbis-dev \ + openal-soft-dev mesa-dev + + WORKDIR /usr/src/ RUN git clone --recursive https://github.com/libspatialindex/libspatialindex && \ cd libspatialindex && \ @@ -32,11 +35,16 @@ RUN cmake -B build \ -DBUILD_SERVER=FALSE \ -DBUILD_CLIENT=TRUE \ -DBUILD_UNITTESTS=FALSE \ + -DBUILD_DOCUMENTATION=FALSE \ -DENABLE_SOUND=OFF \ -DENABLE_POSTGRESQL=OFF \ -DENABLE_REDIS=OFF \ -DENABLE_PROMETHEUS=FALSE \ -DVERSION_EXTRA=docker_client \ + -DENABLE_OPENGL=ON \ + -DENABLE_OPENGL3=OFF \ + -DENABLE_GLES2=OFF \ + -DUSE_SDL2=OFF \ -GNinja && \ cmake --build build && \ cmake --install build @@ -49,7 +57,7 @@ COPY --from=compile /usr/local/bin /usr/local/bin COPY --from=compile /usr/local/lib /usr/local/lib COPY ./entrypoint.sh /usr/local/bin/entrypoint.sh -RUN apk add --no-cache sqlite-libs curl gmp libstdc++ libgcc luajit irrlicht x11vnc bash xdotool leveldb jsoncpp libxi jpeg libpng bind-tools jsoncpp && \ +RUN apk add --no-cache sqlite-libs curl gmp libstdc++ libgcc luajit x11vnc bash xdotool leveldb jsoncpp libxi jpeg libpng bind-tools jsoncpp procps && \ adduser -D minetest --uid 30000 -h /var/lib/minetest && \ mkdir /var/lib/minetest/.minetest && \ chown -R minetest:minetest /var/lib/minetest && \ diff --git a/client/entrypoint.sh b/client/entrypoint.sh index a709a49..02c36bb 100644 --- a/client/entrypoint.sh +++ b/client/entrypoint.sh @@ -5,14 +5,14 @@ export DISPLAY=:99 rm -f /tmp/.X1-lock # Start Xvfb -echo "Starting Xvfb" -Xvfb $DISPLAY -ac -screen 0 "$XVFB_WHD" -nolisten tcp +extension GLX +render -noreset & -xvfb_pid="$!" -echo "Waiting for Xvfb (PID: $Xvfb_pid) to be ready..." -while ! xdpyinfo -display "${DISPLAY}" > /dev/null 2>&1; do - sleep 0.1 -done -echo "Xvfb is running." +# echo "Starting Xvfb" +# Xvfb $DISPLAY -ac -screen 0 "$XVFB_WHD" -nolisten tcp +extension GLX +render -noreset & +# xvfb_pid="$!" +# echo "Waiting for Xvfb (PID: $Xvfb_pid) to be ready..." +# while ! xdpyinfo -display "${DISPLAY}" > /dev/null 2>&1; do +# sleep 0.1 +# done +# echo "Xvfb is running." # prevent spikes if you spawn many containers simultaneously sleep $((2 + $RANDOM % 6)) @@ -25,16 +25,23 @@ fi if [ "$RANDOM_INPUT" == "1" ] then - minetest --address "$SERVER" --port "$PORT" --name "$PLAYERNAME" --password "$PASSWORD" --go --random-input & + xvfb-run minetest --address "$SERVER" --port "$PORT" --name "$PLAYERNAME" --password "$PASSWORD" --go --random-input & else echo minetest --address "$SERVER" --port "$PORT" --name "$PLAYERNAME" --password "$PASSWORD" --go - minetest --address "$SERVER" --port "$PORT" --name "$PLAYERNAME" --password "$PASSWORD" --go & + xvfb-run minetest --address "$SERVER" --port "$PORT" --name "$PLAYERNAME" --password "$PASSWORD" --go & fi minetest_pid=$! function finish { - kill -n 9 $minetest_pid & wait - kill -n 9 $xvfb_pid & wait + if ps -p $minetest_pid > /dev/null ; then + kill -n 9 $minetest_pid + wait $minetest_pid + fi + # if ps -p $xvfb_pid > /dev/null ; then + # kill -n 9 $xvfb_pid + # wait $xvfb_pid + # fi + exit 0 } trap finish EXIT TERM INT QUIT