1 ARG DOCKER_IMAGE=alpine:3.19
2 FROM $DOCKER_IMAGE AS dev
4 ENV IRRLICHT_VERSION master
5 ENV SPATIALINDEX_VERSION master
6 ENV LUAJIT_VERSION v2.1
8 RUN apk add --no-cache git build-base cmake curl-dev zlib-dev zstd-dev \
9 sqlite-dev postgresql-dev hiredis-dev leveldb-dev \
10 gmp-dev jsoncpp-dev ninja ca-certificates
13 RUN git clone --recursive https://github.com/jupp0r/prometheus-cpp && \
14 cd prometheus-cpp && \
16 -DCMAKE_INSTALL_PREFIX=/usr/local \
17 -DCMAKE_BUILD_TYPE=Release \
20 cmake --build build && \
21 cmake --install build && \
23 git clone --recursive https://github.com/libspatialindex/libspatialindex -b ${SPATIALINDEX_VERSION} && \
24 cd libspatialindex && \
26 -DCMAKE_INSTALL_PREFIX=/usr/local && \
27 cmake --build build && \
28 cmake --install build && \
30 git clone --recursive https://luajit.org/git/luajit.git -b ${LUAJIT_VERSION} && \
32 make amalg && make install && \
34 git clone --depth=1 https://github.com/minetest/irrlicht -b ${IRRLICHT_VERSION} && \
35 cp -r irrlicht/include /usr/include/irrlichtmt
39 COPY .git /usr/src/minetest/.git
40 COPY CMakeLists.txt /usr/src/minetest/CMakeLists.txt
41 COPY README.md /usr/src/minetest/README.md
42 COPY minetest.conf.example /usr/src/minetest/minetest.conf.example
43 COPY builtin /usr/src/minetest/builtin
44 COPY cmake /usr/src/minetest/cmake
45 COPY doc /usr/src/minetest/doc
46 COPY fonts /usr/src/minetest/fonts
47 COPY lib /usr/src/minetest/lib
48 COPY misc /usr/src/minetest/misc
49 COPY po /usr/src/minetest/po
50 COPY src /usr/src/minetest/src
51 COPY textures /usr/src/minetest/textures
53 WORKDIR /usr/src/minetest
55 -DCMAKE_INSTALL_PREFIX=/usr/local \
56 -DCMAKE_BUILD_TYPE=Release \
58 -DENABLE_PROMETHEUS=TRUE \
59 -DBUILD_UNITTESTS=FALSE -DBUILD_BENCHMARKS=FALSE \
60 -DBUILD_CLIENT=FALSE \
62 cmake --build build && \
65 FROM $DOCKER_IMAGE AS runtime
67 RUN apk add --no-cache curl gmp libstdc++ libgcc libpq jsoncpp zstd-libs \
68 sqlite-libs postgresql hiredis leveldb && \
69 adduser -D minetest --uid 30000 -h /var/lib/minetest && \
70 chown -R minetest:minetest /var/lib/minetest
72 WORKDIR /var/lib/minetest
74 COPY --from=builder /usr/local/share/minetest /usr/local/share/minetest
75 COPY --from=builder /usr/local/bin/minetestserver /usr/local/bin/minetestserver
76 COPY --from=builder /usr/local/share/doc/minetest/minetest.conf.example /etc/minetest/minetest.conf
77 COPY --from=builder /usr/local/lib/libspatialindex* /usr/local/lib/
78 COPY --from=builder /usr/local/lib/libluajit* /usr/local/lib/
79 USER minetest:minetest
81 EXPOSE 30000/udp 30000/tcp
82 VOLUME /var/lib/minetest/ /etc/minetest/
84 ENTRYPOINT ["/usr/local/bin/minetestserver"]
85 CMD ["--config", "/etc/minetest/minetest.conf"]