Try to fix httpfetch method bug
[minetest.git] / Dockerfile
blob95476663fe5909b9cb863a59dd4416c56faea4ad
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
12 WORKDIR /usr/src/
13 RUN git clone --recursive https://github.com/jupp0r/prometheus-cpp && \
14                 cd prometheus-cpp && \
15                 cmake -B build \
16                         -DCMAKE_INSTALL_PREFIX=/usr/local \
17                         -DCMAKE_BUILD_TYPE=Release \
18                         -DENABLE_TESTING=0 \
19                         -GNinja && \
20                 cmake --build build && \
21                 cmake --install build && \
22         cd /usr/src/ && \
23         git clone --recursive https://github.com/libspatialindex/libspatialindex -b ${SPATIALINDEX_VERSION} && \
24                 cd libspatialindex && \
25                 cmake -B build \
26                         -DCMAKE_INSTALL_PREFIX=/usr/local && \
27                 cmake --build build && \
28                 cmake --install build && \
29         cd /usr/src/ && \
30         git clone --recursive https://luajit.org/git/luajit.git -b ${LUAJIT_VERSION} && \
31                 cd luajit && \
32                 make amalg && make install && \
33         cd /usr/src/ && \
34         git clone --depth=1 https://github.com/minetest/irrlicht -b ${IRRLICHT_VERSION} && \
35                 cp -r irrlicht/include /usr/include/irrlichtmt
37 FROM dev as builder
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
54 RUN cmake -B build \
55                 -DCMAKE_INSTALL_PREFIX=/usr/local \
56                 -DCMAKE_BUILD_TYPE=Release \
57                 -DBUILD_SERVER=TRUE \
58                 -DENABLE_PROMETHEUS=TRUE \
59                 -DBUILD_UNITTESTS=FALSE -DBUILD_BENCHMARKS=FALSE \
60                 -DBUILD_CLIENT=FALSE \
61                 -GNinja && \
62         cmake --build build && \
63         cmake --install 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"]