docker-entrypoint.sh
1 #!/bin/sh 2 3 export JAVA_HOME=/opt/java/customjdk 4 export JAVA_VERSION=jdk-21.0.7+6 5 export PATH="${JAVA_HOME}/bin:${PATH}" 6 export LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 7 8 if [ "$MAINTENANCE_MODE" = "1" ]; then 9 echo "*** ENTERING MAINTENANCE MODE ***" >&2 10 echo "*** Minecraft will not start ***" >&2 11 while true; do 12 sleep 1 13 done 14 exit 0 15 fi 16 17 # For an explanation, see https://docs.papermc.io/paper/aikars-flags 18 AIKAR_FLAGS=" \ 19 -XX:+UseG1GC \ 20 -XX:+ParallelRefProcEnabled \ 21 -XX:MaxGCPauseMillis=200 \ 22 -XX:+UnlockExperimentalVMOptions \ 23 -XX:+DisableExplicitGC \ 24 -XX:+AlwaysPreTouch \ 25 -XX:G1NewSizePercent=30 \ 26 -XX:G1MaxNewSizePercent=40 \ 27 -XX:G1HeapRegionSize=8M \ 28 -XX:G1ReservePercent=20 \ 29 -XX:G1HeapWastePercent=5 \ 30 -XX:G1MixedGCCountTarget=4 \ 31 -XX:InitiatingHeapOccupancyPercent=15 \ 32 -XX:G1MixedGCLiveThresholdPercent=90 \ 33 -XX:G1RSetUpdatingPauseTimePercent=5 \ 34 -XX:SurvivorRatio=32 \ 35 -XX:+PerfDisableSharedMem \ 36 -XX:MaxTenuringThreshold=1 \ 37 " 38 39 # Defines command line options for the Java invocation 40 JAVA_OPTS=" \ 41 -Xms${JAVA_INITIAL_MEM:-256m} \ 42 -Xmx${JAVA_MAX_MEM:-4G} \ 43 ${AIKAR_FLAGS} \ 44 -Dlog4j.configurationFile=/etc/minecraft/server/log4j2.xml \ 45 " 46 47 if [ "$OPENTELEMETRY_AGENT" = "1" ]; then 48 JAVA_OPTS="$JAVA_OPTS \ 49 -Dotel.javaagent.configuration-file=/etc/minecraft/server/opentelemetry.properties \ 50 -javaagent:/usr/local/lib/opentelemetry-javaagent.jar \ 51 " 52 fi 53 54 trap 'echo "Got SIGTERM, shutting down"' TERM 55 56 /opt/java/customjdk/bin/java \ 57 ${JAVA_OPTS} \ 58 -jar /usr/local/lib/fabric-launcher.jar \ 59 --serverId "${MINECRAFT_SERVER_ID:-minecraft}" \ 60 --universe /var/lib/minecraft/universe \ 61 --nogui \ 62 "$@" & 63 64 child=$! 65 wait "$child"