chore(client): update Dockerfile dependencies and entrypoint script

Adjust Dockerfile with additional development packages for libraries.  use xvfb-run instead of xvfb.
This commit is contained in:
Yves-Marie Haussonne 2024-09-30 23:33:49 +02:00
parent 2920b59e1b
commit edd234b5eb
2 changed files with 29 additions and 14 deletions

View File

@ -8,7 +8,10 @@ ARG LUAJIT_VERSION=v2.1
RUN apk add --no-cache git build-base cmake curl-dev zlib-dev zstd-dev \ 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 \ sqlite-dev postgresql-dev hiredis-dev leveldb-dev jpeg-dev libpng-dev \
glfw-dev gmp-dev jsoncpp-dev libxi-dev libintl ninja ca-certificates \ 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/ WORKDIR /usr/src/
RUN git clone --recursive https://github.com/libspatialindex/libspatialindex && \ RUN git clone --recursive https://github.com/libspatialindex/libspatialindex && \
cd libspatialindex && \ cd libspatialindex && \
@ -32,11 +35,16 @@ RUN cmake -B build \
-DBUILD_SERVER=FALSE \ -DBUILD_SERVER=FALSE \
-DBUILD_CLIENT=TRUE \ -DBUILD_CLIENT=TRUE \
-DBUILD_UNITTESTS=FALSE \ -DBUILD_UNITTESTS=FALSE \
-DBUILD_DOCUMENTATION=FALSE \
-DENABLE_SOUND=OFF \ -DENABLE_SOUND=OFF \
-DENABLE_POSTGRESQL=OFF \ -DENABLE_POSTGRESQL=OFF \
-DENABLE_REDIS=OFF \ -DENABLE_REDIS=OFF \
-DENABLE_PROMETHEUS=FALSE \ -DENABLE_PROMETHEUS=FALSE \
-DVERSION_EXTRA=docker_client \ -DVERSION_EXTRA=docker_client \
-DENABLE_OPENGL=ON \
-DENABLE_OPENGL3=OFF \
-DENABLE_GLES2=OFF \
-DUSE_SDL2=OFF \
-GNinja && \ -GNinja && \
cmake --build build && \ cmake --build build && \
cmake --install 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 --from=compile /usr/local/lib /usr/local/lib
COPY ./entrypoint.sh /usr/local/bin/entrypoint.sh 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 && \ adduser -D minetest --uid 30000 -h /var/lib/minetest && \
mkdir /var/lib/minetest/.minetest && \ mkdir /var/lib/minetest/.minetest && \
chown -R minetest:minetest /var/lib/minetest && \ chown -R minetest:minetest /var/lib/minetest && \

View File

@ -5,14 +5,14 @@ export DISPLAY=:99
rm -f /tmp/.X1-lock rm -f /tmp/.X1-lock
# Start Xvfb # Start Xvfb
echo "Starting Xvfb" # echo "Starting Xvfb"
Xvfb $DISPLAY -ac -screen 0 "$XVFB_WHD" -nolisten tcp +extension GLX +render -noreset & # Xvfb $DISPLAY -ac -screen 0 "$XVFB_WHD" -nolisten tcp +extension GLX +render -noreset &
xvfb_pid="$!" # xvfb_pid="$!"
echo "Waiting for Xvfb (PID: $Xvfb_pid) to be ready..." # echo "Waiting for Xvfb (PID: $Xvfb_pid) to be ready..."
while ! xdpyinfo -display "${DISPLAY}" > /dev/null 2>&1; do # while ! xdpyinfo -display "${DISPLAY}" > /dev/null 2>&1; do
sleep 0.1 # sleep 0.1
done # done
echo "Xvfb is running." # echo "Xvfb is running."
# prevent spikes if you spawn many containers simultaneously # prevent spikes if you spawn many containers simultaneously
sleep $((2 + $RANDOM % 6)) sleep $((2 + $RANDOM % 6))
@ -25,16 +25,23 @@ fi
if [ "$RANDOM_INPUT" == "1" ] if [ "$RANDOM_INPUT" == "1" ]
then 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 else
echo minetest --address "$SERVER" --port "$PORT" --name "$PLAYERNAME" --password "$PASSWORD" --go 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 fi
minetest_pid=$! minetest_pid=$!
function finish { function finish {
kill -n 9 $minetest_pid & wait if ps -p $minetest_pid > /dev/null ; then
kill -n 9 $xvfb_pid & wait 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 trap finish EXIT TERM INT QUIT