Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions build/package/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# MC Java Docker container
FROM debian:stable-slim

ARG TARGETOS
ARG TARGETARCH
ARG TARGETVARIANT

RUN apt-get update
RUN apt-get install -y curl openjdk-17-jre-headless

RUN groupadd -g 1000 minecraft &&\
useradd -r -s /bin/false -u 1000 -g 1000 -m minecraft

RUN mkdir -m 755 /data
#chown minecraft:minecraft /data

RUN curl -sfL -o /server.jar https://launcher.mojang.com/v1/objects/c8f83c5655308435b3dcf03c06d9fe8740a77469/server.jar

COPY scripts/start.sh /start.sh

RUN chmod +x /start.sh
RUN echo "eula=true" > eula.txt

ENV MEMORY="1G"

#USER minecraft
EXPOSE 25565/tcp
CMD ["/start.sh"]


# To build
# docker buildx build \
# -t mc-server \
# -f ./build/package/Dockerfile . \
# --load
42 changes: 42 additions & 0 deletions scripts/start.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#!/bin/sh

umask 0002
chmod g+w /data

# Utils
isTrue() {
result=

case $1 in
true | on)
result=0
;;
*)
result=1
;;
esac

return ${result}
}

# Copy content from /run/data/ to /data/.
# This is useful for mounting read-only filesystem such as ConfigMaps in Kubernetes.
if [ -d /run/data ]; then
cp -rf /run/data/ /
fi

# Environment variables
INIT_MEMORY=${INIT_MEMORY:-${MEMORY}}
MAX_MEMORY=${MAX_MEMORY:-${MEMORY}}

JVM_XX_OPTS=${JVM_XX_OPTS:-"-XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1"}
JVM_OPTS="-Xms$INIT_MEMORY -Xmx$MAX_MEMORY"
D_OPTS=${D_OPTS:-"-DPaper.IgnoreJavaVersion=true -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true"}

if isTrue "$EULA"; then
D_OPTS="$D_OPTS -Dcom.mojang.eula.agree=true"
fi

# Start the server
# shellcheck disable=SC2086 disable=SC2068
exec java $JVM_XX_OPTS $JVM_OPTS $D_OPTS -jar /server.jar $@