# Args ARG MINECRAFT_VERSION="1.16.5" ARG FORGE_VERSION="36.2.26" ARG JRE_VERSION="openjdk8-jre" ARG UID=1520 ARG GID=1520 ARG USER=minecraft # The first stage just builds up the modpack FROM alpine:latest AS build # Use all of our arguments ARG MINECRAFT_VERSION ARG FORGE_VERSION ARG JRE_VERSION # Build us up the basics of the Minecraft server environment COPY start-server.sh /minecraft/start-server.sh WORKDIR /minecraft RUN apk add curl "${JRE_VERSION}" &&\ curl -L "https://files.minecraftforge.net/maven/net/minecraftforge/forge/${MINECRAFT_VERSION}-${FORGE_VERSION}/forge-${MINECRAFT_VERSION}-${FORGE_VERSION}-installer.jar" -o installer.jar &&\ java -jar installer.jar --installServer &&\ echo "eula=true" > eula.txt &&\ rm installer.jar installer.jar.log && \ ln -s "forge-${MINECRAFT_VERSION}-${FORGE_VERSION}.jar" server.jar # Stuff them in a smaller container with fewer layers FROM alpine:latest AS final # Use only a subset of arguments ARG JRE_VERSION # Build the thing up RUN apk add bash curl findutils rsync screen "${JRE_VERSION}" RUN groupadd -g $GID -o $USER && useradd -m -u $UID -g $GID -o -s /bin/bash $USER WORKDIR /minecraft COPY --from=build /minecraft . USER $USER CMD [ "bash", "start-server.sh" ] EXPOSE 25565