diff --git a/minecraft-server/Dockerfile b/minecraft-server/Dockerfile index a109efe1..50e6ac5b 100644 --- a/minecraft-server/Dockerfile +++ b/minecraft-server/Dockerfile @@ -13,7 +13,6 @@ RUN useradd -M -s /bin/false minecraft \ EXPOSE 25565 -ADD start.sh /start ADD start-minecraft.sh /start-minecraft USER minecraft diff --git a/minecraft-server/start-minecraft.sh b/minecraft-server/start-minecraft.sh index f0c78578..48e730d3 100755 --- a/minecraft-server/start-minecraft.sh +++ b/minecraft-server/start-minecraft.sh @@ -1,5 +1,20 @@ #!/bin/bash +if [ ! -e /data/eula.txt ]; then + if [ "$EULA" != "" ]; then + echo "# Generated via Docker on $(date)" > eula.txt + echo "eula=$EULA" >> eula.txt + else + echo "" + echo "Please accept the Minecraft EULA at" + echo " https://account.mojang.com/documents/minecraft_eula" + echo "by adding the following immediately after 'docker run':" + echo " -e EULA=TRUE" + echo "" + exit 1 + fi +fi + case $VERSION in LATEST) export VERSION=`wget -O - https://s3.amazonaws.com/Minecraft.Download/versions/versions.json | jsawk -n 'out(this.latest.release)'` @@ -19,43 +34,45 @@ fi if [ ! -e server.properties ]; then cp /tmp/server.properties . -fi -if [ -n "$MOTD" ]; then - sed -i "/motd\s*=/ c motd=$MOTD" /data/server.properties -fi + if [ -n "$MOTD" ]; then + sed -i "/motd\s*=/ c motd=$MOTD" /data/server.properties + fi -if [ -n "$LEVEL" ]; then - sed -i "/level-name\s*=/ c level-name=$LEVEL" /data/server.properties -fi + if [ -n "$LEVEL" ]; then + sed -i "/level-name\s*=/ c level-name=$LEVEL" /data/server.properties + fi -if [ -n "$SEED" ]; then - sed -i "/level-seed\s*=/ c level-seed=$SEED" /data/server.properties -fi + if [ -n "$SEED" ]; then + sed -i "/level-seed\s*=/ c level-seed=$SEED" /data/server.properties + fi -if [ -n "$MODE" ]; then - case ${MODE,,?} in - 0|1|2|3) - ;; - s*) - MODE=0 - ;; - c*) - MODE=1 - ;; - *) - echo "ERROR: Invalid game mode: $MODE" - exit 1 - ;; - esac + if [ -n "$MODE" ]; then + case ${MODE,,?} in + 0|1|2|3) + ;; + s*) + MODE=0 + ;; + c*) + MODE=1 + ;; + *) + echo "ERROR: Invalid game mode: $MODE" + exit 1 + ;; + esac - sed -i "/gamemode\s*=/ c gamemode=$MODE" /data/server.properties + sed -i "/gamemode\s*=/ c gamemode=$MODE" /data/server.properties + fi fi -if [ -n "$OPS" ]; then + +if [ -n "$OPS" -a ! -e ops.txt.converted ]; then echo $OPS | awk -v RS=, '{print}' >> ops.txt fi -if [ -n "$ICON" ]; then + +if [ -n "$ICON" -a ! -e server-icon.png ]; then echo "Using server icon from $ICON..." # Not sure what it is yet...call it "img" wget -q -O /tmp/icon.img $ICON @@ -68,19 +85,5 @@ if [ -n "$ICON" ]; then fi fi -if [ ! -e /data/eula.txt ]; then - if [ "$EULA" != "" ]; then - echo "# Generated via Docker on $(date)" > eula.txt - echo "eula=$EULA" >> eula.txt - else - echo "" - echo "Please accept the Minecraft EULA at" - echo " https://account.mojang.com/documents/minecraft_eula" - echo "by adding the following immediately after 'docker run':" - echo " -e EULA=TRUE" - echo "" - exit 1 - fi -fi - java $JVM_OPTS -jar minecraft_server.$VERSION.jar + diff --git a/minecraft-server/start.sh b/minecraft-server/start.sh index 8d842489..6ea5976e 100755 --- a/minecraft-server/start.sh +++ b/minecraft-server/start.sh @@ -1,4 +1,4 @@ #!/bin/sh set -e -chown -R minecraft:minecraft /data +chown -R minecraft:minecraft /data /start-minecraft exec su -s /bin/bash -c /start-minecraft minecraft