From 93197ffb77ba73212a4c07f295a9e577b43ca2cc Mon Sep 17 00:00:00 2001 From: Geoff Bourne Date: Sat, 10 Aug 2019 16:56:24 -0500 Subject: [PATCH] Switch to OpenJ9 base image (#360) --- Dockerfile | 4 ++-- README.md | 8 ++++++++ start-minecraftFinalSetup | 17 +++++++++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5aa881bd..64f4829a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM openjdk:8u212-jre-alpine +FROM adoptopenjdk/openjdk8-openj9:alpine LABEL maintainer "itzg" @@ -75,7 +75,7 @@ WORKDIR /data ENTRYPOINT [ "/start" ] ENV UID=1000 GID=1000 \ - JVM_XX_OPTS="-XX:+UseG1GC" MEMORY="1G" \ + MEMORY="1G" \ TYPE=VANILLA VERSION=LATEST FORGEVERSION=RECOMMENDED SPONGEBRANCH=STABLE SPONGEVERSION= FABRICVERSION=LATEST LEVEL=world \ PVP=true DIFFICULTY=easy ENABLE_RCON=true RCON_PORT=25575 RCON_PASSWORD=minecraft \ LEVEL_TYPE=DEFAULT GENERATOR_SETTINGS= WORLD= MODPACK= MODS= SERVER_PORT=25565 ONLINE_MODE=TRUE CONSOLE=true SERVER_NAME="Dedicated Server" \ diff --git a/README.md b/README.md index 3a7c77d9..ffd8505c 100644 --- a/README.md +++ b/README.md @@ -1015,6 +1015,14 @@ via a `JVM_XX_OPTS` environment variable. For some cases, if e.g. after removing mods, it could be necessary to startup minecraft with an additional `-D` parameter like `-Dfml.queryResult=confirm`. To address this you can use the environment variable `JVM_DD_OPTS`, which builds the params from a given list of values separated by space, but without the `-D` prefix. To make things running under systems (e.g. Plesk), which doesn't allow `=` inside values, a `:` (colon) could be used instead. The upper example would look like this: `JVM_DD_OPTS=fml.queryResult:confirm`, and will be converted to `-Dfml.queryResult=confirm`. +The container uses [OpenJ9](https://www.eclipse.org/openj9/docs) and a couple of J9 options are +simplified by environment variables: + +- `-e TUNE_VIRTUALIZED=TRUE` : enables the option to + [optimize for virtualized environments](https://www.eclipse.org/openj9/docs/xtunevirtualized/) +- `-e TUNE_NURSERY_SIZES=TRUE` : configures nursery sizes where the initial size is 50% + of the `MAX_MEMORY` and the max size is 80%. + ### HTTP Proxy You may configure the use of an HTTP/HTTPS proxy by passing the proxy's URL via the `PROXY` diff --git a/start-minecraftFinalSetup b/start-minecraftFinalSetup index d848c6d4..6dccba6c 100644 --- a/start-minecraftFinalSetup +++ b/start-minecraftFinalSetup @@ -84,6 +84,23 @@ if [ -n "$JVM_DD_OPTS" ]; then done fi +if isTrue ${TUNE_VIRTUALIZED}; then + JVM_XX_OPTS="${JVM_XX_OPTS} -Xtune:virtualized" +fi + +if isTrue ${TUNE_NURSERY_SIZES}; then + case ${MAX_MEMORY^^} in + *G) + MAX_MEMORY_MB=$(( ${MAX_MEMORY%?} * 1024 )) ;; + *M) + MAX_MEMORY_MB=${MAX_MEMORY%?} ;; + esac + + NURSERY_MINIMUM=$(( ${MAX_MEMORY_MB} / 2 )) + NURSERY_MAXIMUM=$(( ${MAX_MEMORY_MB} * 4/5 )) + JVM_XX_OPTS="${JVM_XX_OPTS} -Xmns${NURSERY_MINIMUM}M -Xmnx${NURSERY_MAXIMUM}M" +fi + mcServerRunnerArgs="--stop-duration 60s" if [[ ${TYPE} == "FEED-THE-BEAST" ]]; then