diff --git a/minecraft-server/Dockerfile b/minecraft-server/Dockerfile index f8c1e526..f3d6e3ae 100644 --- a/minecraft-server/Dockerfile +++ b/minecraft-server/Dockerfile @@ -14,6 +14,7 @@ RUN apk add --no-cache -U \ jq \ mysql-client \ tzdata \ + rsync \ python python-dev py2-pip RUN pip install mcstatus diff --git a/minecraft-server/start-minecraftFinalSetup b/minecraft-server/start-minecraftFinalSetup index 4b5a026e..e9590e1e 100755 --- a/minecraft-server/start-minecraftFinalSetup +++ b/minecraft-server/start-minecraftFinalSetup @@ -36,13 +36,11 @@ done # If any modules have been provided, copy them over mkdir -p /data/mods -for m in /mods/*.{jar,zip} -do - if [ -f "$m" -a ! -f "/data/mods/$m" ]; then - echo Copying mod `basename "$m"` - cp "$m" /data/mods - fi -done +if [ -d /mods ]; then + echo "Copying any mods over..." + rsync -a --out-format="update:%f:Last Modified %M" --prune-empty-dirs --include '*/' --include '*.jar' -include '*.zip' --exclude '*' --update /mods /data +fi + [ -d /data/config ] || mkdir /data/config for c in /config/* do @@ -52,10 +50,13 @@ do fi done +mkdir -p /data/plugins if [ "$TYPE" = "SPIGOT" ]; then if [ -d /plugins ]; then - echo Copying any Bukkit plugins over - cp -r /plugins /data + echo "Copying any Bukkit plugins over..." + # Copy plugins over using rsync to allow deeply nested updates of plugins + # only updates files if the source file is newer and print updated files + rsync -a --out-format="update:%f:Last Modified %M" --prune-empty-dirs --include '*/' --include '*.jar' --exclude '*' --update /plugins /data fi fi