Уважаемый ЛОР, выручай.
То, что я вижу, ломает мои понимания картины мира докера. Возможно, недочитал, возможно, инакомыслил.
Есть докерфайл, от которого я хочу унаследоваться и чуть докрутить под себя. Он тут: https://github.com/minetest/minetest/blob/master/Dockerfile
В нем есть сборка запускаемой части:
FROM $DOCKER_IMAGE AS runtime
RUN apk add --no-cache curl gmp libstdc++ libgcc libpq jsoncpp zstd-libs \
sqlite-libs postgresql hiredis leveldb && \
adduser -D minetest --uid 30000 -h /var/lib/minetest && \
chown -R minetest:minetest /var/lib/minetest
WORKDIR /var/lib/minetest
COPY --from=builder /usr/local/share/luanti /usr/local/share/luanti
COPY --from=builder /usr/local/bin/luantiserver /usr/local/bin/luantiserver
COPY --from=builder /usr/local/share/doc/luanti/minetest.conf.example /etc/minetest/minetest.conf
COPY --from=builder /usr/local/lib/libspatialindex* /usr/local/lib/
COPY --from=builder /usr/local/lib/libluajit* /usr/local/lib/
USER minetest:minetest
EXPOSE 30000/udp 30000/tcp
VOLUME /var/lib/minetest/ /etc/minetest/
ENTRYPOINT ["/usr/local/bin/luantiserver"]
CMD ["--config", "/etc/minetest/minetest.conf"]
Я делаю такое
FROM lscr.io/linuxserver/minetest:latest
RUN apk add --no-cache luajit lua5.1-socket
EXPOSE 29999
RUN echo "#!/usr/bin/env bash" > /usr/local/bin/ipv4
RUN echo "ifconfig | grep -A 1 eth0 | tail -n 1 | awk '{ print \$2 }' | sed 's/addr://'" >> /usr/local/bin/ipv4
RUN chmod o+x /usr/local/bin/ipv4
RUN echo "#!/usr/bin/env bash" > /usr/local/bin/start_luanti
RUN echo "export IPV4=$(/usr/bin/ipv4)" >> /usr/local/bin/start_luanti
RUN echo "/usr/local/bin/luantiserver --config /etc/minetest/minetest.conf" >> /usr/local/bin/start_luanti
RUN chmod o+x /usr/local/bin/start_luanti
#ENTRYPOINT ["/usr/local/bin/start_luanti"]
ENTRYPOINT ["/usr/local/bin/luantiserver"]
CMD ["--config", "/etc/minetest/minetest.conf"]
#RUN echo "#!/usr/bin/env bash" > /usr/bin/app
#RUN echo "for ((;;))" >> /usr/bin/app
#RUN echo "do" >> /usr/bin/app
#RUN echo "sleep 1" >> /usr/bin/app
#RUN echo "done" >> /usr/bin/app
#RUN chmod o+x /usr/bin/app
#ENTRYPOINT ["bash", "/usr/bin/app"]
Пытаюсь прикрутить мод, которому нужно чуть больше, чем положить в папку и разархивировать.
И я получаю ошибку
[+] Running 1/0
✔ Container minetest-server Recreated 0.1s
Attaching to minetest-server
Gracefully stopping... (press Ctrl+C again to force)
Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: exec: "/usr/local/bin/luantiserver": stat /usr/local/bin/luantiserver: no such file or directory: unknown
Т.е. при сборке не собралось то, что заложено в «родительском» докерфайле - вот как так? Как это работает? Как мне унаследоваться от стадии runtime
?