From 0d7e5e2e52eec9be24a19b1ac1383a6f5da69348 Mon Sep 17 00:00:00 2001 From: Paul Date: Wed, 12 Aug 2020 16:50:47 +0200 Subject: [PATCH] Initial commit The files were ported over from the old repository at https://git.zom.bi/zombi-systems/dockerfiles/-/tree/master/games/forge-modbase originally written by LOD, steffen and madmaurice. --- Dockerfile | 37 +++++++++++++++++++++++++++++++++++++ entrypoint.sh | 25 +++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 Dockerfile create mode 100644 entrypoint.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b0bec09 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,37 @@ +FROM openjdk:8-jre-slim +EXPOSE 25565 + +ARG MINECRAFT=1.7.10 +ARG FORGE=10.13.4.1641 + +ENV \ + ForgeUrl1=http://files.minecraftforge.net/maven/net/minecraftforge/forge/${MINECRAFT}-${FORGE}/forge-${MINECRAFT}-${FORGE}-installer.jar \ + ForgeUrl2=http://files.minecraftforge.net/maven/net/minecraftforge/forge/${MINECRAFT}-${FORGE}-${MINECRAFT}/forge-${MINECRAFT}-${FORGE}-${MINECRAFT}-installer.jar \ + InstallerJar=forge-${MINECRAFT}-${FORGE}-installer.jar + +ENV \ + INSTDIR=/usr/share/minecraft \ + RUNDIR=/minecraft + +RUN useradd -U -d /minecraft -m forge + +WORKDIR $INSTDIR + +# Since the URL schema changed, we need to try both after another. +# Prepare the server files and remove the installer. +# The EULA needs to be present, so we also accept it at this point. +# The remaining jar beginning with forge-* is the launcher (multiple names +# possible), so we will symlink it to forge.jar for convenience. +RUN ( wget -O ${InstallerJar} ${ForgeUrl1} || wget -O ${InstallerJar} ${ForgeUrl2} ) && \ + echo "eula=true" > eula.txt && \ + java -jar ./${InstallerJar} --installServer && rm -f ${InstallerJar} && \ + ln -s "forge-${MINECRAFT}-*.jar" forge.jar || exit 2 + +COPY entrypoint.sh /usr/bin + +WORKDIR $RUNDIR + +VOLUME ["/minecraft"] + +ENTRYPOINT ["/usr/bin/entrypoint.sh"] + diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..0f397ce --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# rmln links dest to target, but removes the target if it already exists. +rmln() { + dest=$1 + target=$2 + + [ -e "$target" ] && rm -rf "$target" + ln -s "$dest" "$target" +} + + +rmln "$INSTDIR/forge.jar" "$RUNDIR/forge.jar" +rmln "$INSTDIR/libraries" "$RUNDIR/libraries" +rmln "$INSTDIR/minecraft_server.$MineVers.jar" "$RUNDIR/minecraft_server.$MineVers.jar" +rmln "$INSTDIR/eula.txt" "$RUNDIR/eula.txt" + +( echo "MINECRAFT=${MINECRAFT}"; echo "FORGE=${FORGE}" ) > $RUNDIR/version.info + +chown forge:forge "$RUNDIR" + +cd $RUNDIR + +exec su forge -c "/usr/bin/java -jar $RUNDIR/forge.jar" +