From 582c60cd0362fea6b926375892f57fd65efd60db Mon Sep 17 00:00:00 2001 From: Steve Shipway Date: Sat, 2 Jan 2016 13:11:07 +1300 Subject: [PATCH] Add /plugins mount for external bukkit plugins Add TYPE=BUKKIT documentation --- minecraft-server/Dockerfile | 4 ++- minecraft-server/README.md | 51 +++++++++++++++++++++++++++++ minecraft-server/start-minecraft.sh | 7 +++- 3 files changed, 60 insertions(+), 2 deletions(-) diff --git a/minecraft-server/Dockerfile b/minecraft-server/Dockerfile index 9d8c84b5..3eacc391 100644 --- a/minecraft-server/Dockerfile +++ b/minecraft-server/Dockerfile @@ -14,7 +14,8 @@ RUN useradd -M -s /bin/false --uid 1000 minecraft \ && mkdir /data \ && mkdir /config \ && mkdir /mods \ - && chown minecraft:minecraft /data /config /mods + && mkdir /plugins + && chown minecraft:minecraft /data /config /mods /plugins EXPOSE 25565 @@ -24,6 +25,7 @@ COPY start-minecraft.sh /start-minecraft VOLUME ["/data"] VOLUME ["/mods"] VOLUME ["/config"] +VOLUME ["/plugins"] COPY server.properties /tmp/server.properties WORKDIR /data diff --git a/minecraft-server/README.md b/minecraft-server/README.md index 88a41392..5120e20d 100644 --- a/minecraft-server/README.md +++ b/minecraft-server/README.md @@ -146,6 +146,57 @@ This works well if you want to have a common set of modules in a separate location, but still have multiple worlds with different server requirements in either persistent volumes or a downloadable archive. +## Running a Bukkit/Spigot server + +Enable Bukkit/Spigot server mode by adding a `-e TYPE=BUKKIT -e VERSION=1.8` or `-e TYPE=SPIGOT -e VERSION=1.8` to your command-line. + +The VERSION option should be set to 1.8, as this is the only version of CraftBukkit and Spigot currently +available. The latest build in this branch will be used. + + $ docker run -d -v /path/on/host:/data \ + -e TYPE=SPIGOT -e VERSION=1.8 \ + -p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server + +You can install Bukkit plugins in two ways. + +### Using the /data volume + +This is the easiest way if you are using a persistent `/data` mount. + +To do this, you will need to attach the container's `/data` directory +(see "Attaching data directory to host filesystem”). +Then, you can add plugins to the `/path/on/host/plugins` folder you chose. From the example above, +the `/path/on/host` folder contents look like: + +``` +/path/on/host +├── plugins +│   └── ... INSTALL PLUGINS HERE ... +├── ops.json +├── server.properties +├── whitelist.json +└── ... +``` + +If you add plugins while the container is running, you'll need to restart it to pick those +up: + + docker stop mc + docker start mc + +### Using separate mounts + +This is the easiest way if you are using an ephemeral `/data` filesystem, +or downloading a world with the `WORLD` option. + +There is one additional volume that can be mounted; `/plugins`. +Any files in this filesystem will be copied over to the main +`/data/plugins` filesystem before starting Minecraft. + +This works well if you want to have a common set of plugins in a separate +location, but still have multiple worlds with different server requirements +in either persistent volumes or a downloadable archive. + ## Using Docker Compose Rather than type the server options below, the port mappings above, etc diff --git a/minecraft-server/start-minecraft.sh b/minecraft-server/start-minecraft.sh index 0eae5c40..a3bf8035 100755 --- a/minecraft-server/start-minecraft.sh +++ b/minecraft-server/start-minecraft.sh @@ -289,6 +289,11 @@ do cp -rf "$c" /data/config fi done - +if [ "$TYPE" = "SPIGOT" ]; then + echo Copying any Bukkit plugins over + if [ -d /plugins ]; then + cp -r /plugins /data + fi +fi exec java $JVM_OPTS -jar $SERVER