ARG OPENGL_BASE_IMAGE="registry.apps.education.fr/iri/minetest/docker_test_harness/opengl:latest" FROM alpine:latest AS compile ARG MINETEST_VERSION=5.9.1 ARG MINETEST_GAME_VERSION=5.8.0 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 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 && \ cmake -B build \ -DCMAKE_INSTALL_PREFIX=/usr/local && \ cmake --build build && \ cmake --install build && \ cd /usr/src/ && \ git clone --recursive https://luajit.org/git/luajit.git -b ${LUAJIT_VERSION} && \ cd luajit && \ make amalg && make install && \ cd /usr/src/ && \ git clone --depth=1 --single-branch --branch ${MINETEST_VERSION} -c advice.detachedHead=false https://github.com/minetest/minetest.git minetest && \ rm -fr minetest/.git && \ git clone --depth=1 -b ${MINETEST_GAME_VERSION} https://github.com/minetest/minetest_game.git minetest/games/minetest_game && \ rm -fr minetest/games/minetest_game/.git WORKDIR /usr/src/minetest RUN cmake -B build \ -DCMAKE_INSTALL_PREFIX=/usr/local \ -DCMAKE_BUILD_TYPE=Release \ -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 FROM ${OPENGL_BASE_IMAGE} COPY --from=compile /usr/local/share/minetest /usr/local/share/minetest COPY --from=compile /usr/local/bin/minetest /usr/local/bin/minetest 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 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 && \ chmod 755 /usr/local/bin/entrypoint.sh WORKDIR /var/lib/minetest COPY <<-EOF /var/lib/minetest/.minetest/minetest.conf enable_fog = false leaves_style = opaque smooth_lighting = false enable_clouds = false enable_sound = false enable_particles = false undersampling = 8 enable_shaders = false fps_max = 10 viewing_range = 20 screen_w = 640 screen_h = 480 fullscreen_bpp = 8 fov = 45 video_driver = opengl EOF RUN chown minetest:minetest /var/lib/minetest/.minetest/minetest.conf USER minetest:minetest ENV \ SERVER="minetest_server" \ PASSWORD="" \ PORT="30000" \ PLAYERNAME="random" \ RANDOM_INPUT="0" \ VNC="0" # EXPOSE 5900/tcp CMD ["/usr/local/bin/entrypoint.sh"]