diff --git a/minecraft-server/Dockerfile b/minecraft-server/Dockerfile index e1f8a32f..9d8c84b5 100644 --- a/minecraft-server/Dockerfile +++ b/minecraft-server/Dockerfile @@ -12,7 +12,9 @@ RUN wget -O /usr/bin/jsawk https://github.com/micha/jsawk/raw/master/jsawk RUN chmod +x /usr/bin/jsawk RUN useradd -M -s /bin/false --uid 1000 minecraft \ && mkdir /data \ - && chown minecraft:minecraft /data + && mkdir /config \ + && mkdir /mods \ + && chown minecraft:minecraft /data /config /mods EXPOSE 25565 @@ -20,6 +22,8 @@ COPY start.sh /start COPY start-minecraft.sh /start-minecraft VOLUME ["/data"] +VOLUME ["/mods"] +VOLUME ["/config"] COPY server.properties /tmp/server.properties WORKDIR /data @@ -32,4 +36,4 @@ ENV UID=1000 ENV MOTD A Minecraft Server Powered by Docker ENV JVM_OPTS -Xmx1024M -Xms1024M ENV TYPE=VANILLA VERSION=LATEST FORGEVERSION=RECOMMENDED LEVEL=world PVP=true DIFFICULTY=easy \ - LEVEL_TYPE=DEFAULT GENERATOR_SETTINGS= + LEVEL_TYPE=DEFAULT GENERATOR_SETTINGS= WORLD= diff --git a/minecraft-server/start-minecraft.sh b/minecraft-server/start-minecraft.sh index 68e0973c..86cf3068 100755 --- a/minecraft-server/start-minecraft.sh +++ b/minecraft-server/start-minecraft.sh @@ -86,6 +86,14 @@ case $TYPE in esac +# If supplied with a URL for a world, download it and unpack +case "X$WORLD" in + Xhttp*) + wget -q -O - $WORLD > /data/world.zip + unzip /data/world.zip + ;; +esac + if [ ! -e server.properties ]; then cp /tmp/server.properties . @@ -193,4 +201,21 @@ if [ -n "$ICON" -a ! -e server-icon.png ]; then fi fi +# If any modules have been provided, copy them over +[ -d /data/mods ] || mkdir /data/mods +for m in /mods/*.jar +do + if [ -f "$m" ]; then + cp $m /data/mods + fi +done +[ -d /data/config ] || mkdir /data/config +for c in /config/* +do + if [ -f "$c" ]; then + cp -r $c /data/config + fi +done + + exec java $JVM_OPTS -jar $SERVER