refactor: modular init, add bedrock loader, dynamic java/healthcheck
Build dev image / build (push) Failing after 18m12s
Build dev image / build (push) Failing after 18m12s
- Split monolithic init into modular lib files under scripts/lib/
(common.sh, java.sh, server.sh, loaders/{vanilla,paper,fabric,forge,neoforge}.sh)
- Add bedrock loader: downloads from Minecraft Services API,
runs native binary with LD_LIBRARY_PATH, skips Java setup
- Add auto-detection for JAVA_VERSION from Mojang version manifest
(MC 1.20.5+ -> temurin@21, 1.17-1.20.4 -> temurin@17,
1.17 -> temurin@16, pre-1.17 -> temurin@8)
- Fix NEW_FORGE unbound variable when non-Forge loaders run
- Fix Fabric loader jq filter (-s slurp removed, null string check fixed)
- Fix Forge test detection (recursive find for forge-*-server.jar)
- Dynamic healthcheck: nc -z TCP 25565 for Java, nc -zu UDP 19132 for bedrock
- Add .gitea/workflows/build-dev.yml for dev branch CI builds
- Base image: debian:bookworm-slim (from ubuntu:noble)
- Add unzip, netcat-openbsd to Docker image
- Switch to shebangs, set -euo pipefail throughout
This commit is contained in:
+12
-9
@@ -1,4 +1,4 @@
|
||||
FROM ubuntu:noble
|
||||
FROM debian:bookworm-slim
|
||||
|
||||
ARG UID=1000
|
||||
ARG GID=1000
|
||||
@@ -7,7 +7,6 @@ ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||
|
||||
# install prerequisites
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
curl \
|
||||
@@ -15,23 +14,27 @@ RUN apt-get update && \
|
||||
jq \
|
||||
libxml2-utils \
|
||||
sudo \
|
||||
tini && \
|
||||
tini \
|
||||
unzip \
|
||||
netcat-openbsd && \
|
||||
apt-get autoremove && apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Remove default ubuntu user
|
||||
RUN userdel -r ubuntu && \
|
||||
useradd --create-home -u 1000 minecraft && \
|
||||
RUN groupadd -g ${GID} minecraft && \
|
||||
useradd --create-home -u ${UID} -g ${GID} minecraft && \
|
||||
echo 'minecraft ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers && \
|
||||
mkdir -p /data && \
|
||||
chown -R ${UID}:${GID} /data
|
||||
|
||||
RUN su -c "curl -sL https://github.com/Jabba-Team/jabba/raw/main/install.sh | bash && . ~/.jabba/jabba.sh" minecraft
|
||||
|
||||
COPY ./scripts/init /
|
||||
RUN chmod +x /init
|
||||
COPY ./scripts/ /scripts/
|
||||
RUN chmod +x /scripts/init
|
||||
|
||||
USER minecraft
|
||||
|
||||
ENTRYPOINT ["tini", "--", "/init"]
|
||||
HEALTHCHECK --start-period=2m --interval=30s --timeout=10s --retries=3 \
|
||||
CMD bash -c 'if [ "${MC_LOADER}" = "bedrock" ]; then nc -zu 127.0.0.1 19132; else nc -z 127.0.0.1 25565; fi'
|
||||
|
||||
ENTRYPOINT ["tini", "--", "/scripts/init"]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user