papermc-build/Dockerfile
Ryan Voots 32b96f3eae
Some checks failed
ci/woodpecker/push/build/2 Pipeline was successful
ci/woodpecker/push/build/1 Pipeline was successful
ci/woodpecker/push/build/4 Pipeline failed
ci/woodpecker/push/build/3 Pipeline was successful
Also add discord notification
2024-12-04 10:29:04 -05:00

95 lines
3.7 KiB
Docker
Executable file

########################################################
############## We use a java base image ################
########################################################
FROM debian:sid AS build
# Set environment variables to avoid interactive prompts
ENV DEBIAN_FRONTEND=noninteractive
ENV APT_LISTCHANGES_FRONTEND=none
RUN ls -lah /etc/apt/sources.list.d/
RUN sed -i -e's/ main/ main contrib non-free/g' /etc/apt/sources.list.d/debian.sources
RUN apt update && apt install -y curl jq bash sudo wget gnupg2
RUN wget -O - https://apt.corretto.aws/corretto.key | gpg --dearmor -o /usr/share/keyrings/corretto-keyring.gpg && \
echo "deb [signed-by=/usr/share/keyrings/corretto-keyring.gpg] https://apt.corretto.aws stable main" | tee /etc/apt/sources.list.d/corretto.list
RUN apt-get update && apt-get install -y java-21-amazon-corretto-jdk libxi6 libxtst6 libxrender1
LABEL Marc Tönsing <marc@marc.tv>
ARG version=1.20.6
########################################################
############## Download Paper with API #################
########################################################
WORKDIR /opt/minecraft
COPY ./getpaperserver.sh /
RUN chmod +x /getpaperserver.sh
RUN ls -lah /
RUN /getpaperserver.sh ${version}
# Run paperclip and obtain patched jar
RUN java -Dpaperclip.patchonly=true -jar /opt/minecraft/paperclip.jar; exit 0
########################################################
############## Running environment #####################
########################################################
FROM debian:sid AS runtime
# Set environment variables to avoid interactive prompts
ENV DEBIAN_FRONTEND=noninteractive
ENV APT_LISTCHANGES_FRONTEND=none
RUN sed -i -e's/ main/ main contrib non-free/g' /etc/apt/sources.list.d/debian.sources
RUN apt update && apt install -y curl jq bash sudo wget gnupg2
RUN wget -O - https://apt.corretto.aws/corretto.key | gpg --dearmor -o /usr/share/keyrings/corretto-keyring.gpg && \
echo "deb [signed-by=/usr/share/keyrings/corretto-keyring.gpg] https://apt.corretto.aws stable main" | tee /etc/apt/sources.list.d/corretto.list
RUN apt-get update && apt-get install -y java-21-amazon-corretto-jdk libxi6 libxtst6 libxrender1
# Working directory
WORKDIR /data
# Obtain runable jar from build stage
COPY --from=build /opt/minecraft/paperclip.jar /opt/minecraft/paperspigot.jar
# Install and run rcon
ARG RCON_CLI_VER=1.6.1
ADD https://github.com/itzg/rcon-cli/releases/download/${RCON_CLI_VER}/rcon-cli_${RCON_CLI_VER}_linux_amd64.tar.gz /tmp/rcon-cli.tgz
RUN tar -x -C /usr/local/bin -f /tmp/rcon-cli.tgz rcon-cli && \
rm /tmp/rcon-cli.tgz
# Volumes for the external data (Server, World, Config...)
VOLUME "/data"
# Expose minecraft port
EXPOSE 25565/tcp
EXPOSE 25565/udp
# Set memory size
ARG memory_size=3G
ENV MEMORYSIZE=$memory_size
# Set Java Flags
ARG java_flags="-Dlog4j2.formatMsgNoLookups=true -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 -Dusing.aikars.flags=mcflags.emc.gs -Dcom.mojang.eula.agree=true"
ENV JAVAFLAGS=$java_flags
WORKDIR /data
COPY /docker-entrypoint.sh /opt/minecraft
RUN chmod +x /opt/minecraft/docker-entrypoint.sh
RUN addgroup --gid 9001 dockergroup
RUN adduser --shell /bin/sh --uid 9001 --gid 9001 dockeruser
# Install gosu
#RUN set -eux; \
# apk update; \
# apk add --no-cache su-exec;
# Entrypoint
ENTRYPOINT ["/opt/minecraft/docker-entrypoint.sh"]