From 7b4bc9f80e6127ffd58342171ec97f017f02e874 Mon Sep 17 00:00:00 2001 From: Kris Lamoureux Date: Fri, 10 May 2024 03:17:44 -0400 Subject: [PATCH] Update the Dockerfile for readability - Make the download/verify section more readable - Add JVM_OPTS to CMD - Use ARG EULA during the build - Update build instructions in README --- Dockerfile | 33 +++++++++++++++++++-------------- README.md | 4 +++- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/Dockerfile b/Dockerfile index 68e8811..8cf6271 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,9 @@ FROM debian:stable -ENV DEBIAN_FRONTEND=noninteractive ENV VERSION=1.20.1 ENV JVM_OPTS="-Xmx2G -Xms1G" -ENV EULA=false +ENV DEBIAN_FRONTEND=noninteractive +ARG EULA=false # Install dependencies RUN apt-get update && \ @@ -21,17 +21,22 @@ RUN mkdir /app && \ # Download and verify sha1sum for server.jar WORKDIR /app -RUN curl -s https://launchermeta.mojang.com/mc/game/version_manifest.json \ - | jq -r --arg id "$VERSION" '.versions[] | select(.id == $id) | .url' | xargs curl -s \ - | jq -r '.downloads.server' | tee "/tmp/dl.json" | jq -r '.url' | xargs curl -s -o server.jar \ - && sha1sum server.jar | awk '{print $1}' | xargs -I{} sh -c '[ "{}" = "$(jq -r .sha1 /tmp/dl.json)" ] && \ - (echo "Checksum matches" && rm /tmp/dl.json) || (echo "Checksum failed" && exit 1)' \ - && chown minecraft:minecraft server.jar - USER minecraft +RUN set -ux; \ + # Get server.jar based on $VERSION + curl -s https://launchermeta.mojang.com/mc/game/version_manifest.json \ + | jq -r --arg id "$VERSION" '.versions[] | select(.id == $id) | .url' | xargs curl -s \ + | jq -r '.downloads.server' | tee "/tmp/dl.json" | jq -r '.url' | xargs curl -s -o server.jar && \ + chown minecraft:minecraft server.jar && \ + java -jar server.jar --initSettings --nogui && \ + sed -i "s/^eula=.*\$/eula=$EULA/" eula.txt && \ + # Get SHA1 hash of server.jar and compare + SHA1="$(sha1sum server.jar | awk '{print $1}')" && \ + EXPECTED="$(jq -r .sha1 /tmp/dl.json)"; rm /tmp/dl.json && \ + if [ ! "$SHA1" = "$EXPECTED" ]; then \ + echo "[ERROR] SHA1=\"$SHA1\" expected \"$EXPECTED\""; \ + exit 1; \ + fi + EXPOSE 25565 - -# temp -RUN echo 'eula=true' > eula.txt - -CMD ["java", "-jar", "server.jar", "nogui"] +CMD ["java", "-jar", "server.jar", "$JVM_OPTS", "--nogui"] diff --git a/README.md b/README.md index 2183dba..426a540 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,9 @@ This Dockerfile sets up a Minecraft server based on Debian stable. WIP. To test image creation, run: ``` -docker build . -t minecraft:vanilla; docker run -d minecraft:vanilla +docker build --build-arg EULA=true -t minecraft . && \ +docker run -d --name minecraft --rm minecraft && \ +docker logs -f minecraft ``` ## Copyright and License