diff --git a/Dockerfile b/Dockerfile index 97034dd..a7fb45c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,13 +8,19 @@ RUN unzip -j /usr/bin/mcrcon.zip -d /usr/bin/mc-rcon && chmod a+x /usr/bin/mc-rc # actual image -FROM eclipse-temurin:21 +FROM eclipse-temurin:25 + +# included in case the base image doesn't include wget (known bug 08/2026) +RUN apt-get update && apt-get install -y wget ca-certificates COPY --from=builder /usr/bin/mc-rcon /usr/bin/mc-rcon + COPY scripts/start-server.sh /usr/bin/start-server.sh RUN chmod a+x /usr/bin/start-server.sh + COPY scripts/mcrcon /usr/bin/mcrcon RUN chmod a+x /usr/bin/mcrcon + COPY template/ /defaults/ WORKDIR /minecraft_data diff --git a/README.md b/README.md index a450843..74042e5 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ git clone https://gitea.jovan04.com/evan/minecraft-docker && cd minecraft-docker ### Build the Image ```sh -docker build -t minecraft_server . +docker build --pull -t minecraft_server . ``` ### Run with Docker Compose @@ -36,7 +36,29 @@ On first startup (when the data volume is empty): * A default RCON configuration is written * `server.jar` is downloaded from a provided link -On subsequent startups, existing files are reused unchanged and environment variables are unused. +On subsequent startups, existing files are reused unchanged and environment variables are unused. To reset the server or create a new one, change the name in `volumes: data: name: new_volume_name` in the `docker-compose.yml` file. + +### Upgrading Java Version +Occasionally, Minecraft will update the Java version they compile their class files with. Because the Java runtime is pre-bundled with the Docker container, an update from Minecraft requires an update and rebuild of the Docker container. + +You can tell this is required if there are errors like the following when trying to start the server: +``` +minecraft_server | Error: LinkageError occurred while loading main class net.minecraft.bundler.Main +minecraft_server | java.lang.UnsupportedClassVersionError: net/minecraft/bundler/Main has been compiled by a more recent version of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file versions up to 65.0 +minecraft_server exited with code 1 (restarting) +``` + +To upgrade, change the base eclipse-temurin image's version to one supported by the latest Minecraft version. In `./Dockerfile`: +``` +# previously, eclipse-temurin:21 +FROM eclipse-temurin:25 +``` + +Then, rebuild the container and start as normal: +```sh +docker build --pull -t minecraft_server . +docker compose up -d +``` ### RCON Access Minecraft implements the Remote Console (RCON) protocol, which allows server administrators to remotely execute commands. See more info [here](https://minecraft.wiki/w/RCON) and [here](https://developer.valvesoftware.com/wiki/Source_RCON_Protocol). RCON access is enabled automatically from inside the container only. **Do not expose the RCON service to the internet directly!!!** RCON is not encrypted, so exposing this service can give hackers direct access to your server's administrator console. diff --git a/scripts/start-server.sh b/scripts/start-server.sh index 7e2c10b..5c190d7 100644 --- a/scripts/start-server.sh +++ b/scripts/start-server.sh @@ -7,7 +7,7 @@ if ! test -f /minecraft_data/server.jar; then echo "ERROR: SERVER_JAR_DOWNLOAD_URL not set for initial volume creation" exit 1 fi - wget -O /minecraft_data/server.jar "${SERVER_JAR_DOWNLOAD_URL}" + wget --no-verbose -O /minecraft_data/server.jar "${SERVER_JAR_DOWNLOAD_URL}" fi # server.properties