From 57f5b3814dead4adf322c113b743b04e4a86ede1 Mon Sep 17 00:00:00 2001 From: Mitchell Skaggs Date: Fri, 20 Mar 2020 14:52:08 -0500 Subject: [PATCH 1/6] Add rcon-cli install to Dockerfile --- Dockerfile | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Dockerfile b/Dockerfile index dbb1ecb..914616d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,6 +16,9 @@ ENV RENDER_POI true ENV CONFIG_LOCATION /home/minecraft/config.py +ENV RCON_ARGS_PRE "" +ENV RCON_ARGS_POST "" + RUN apt-get update && \ apt-get install -y wget gnupg && \ echo "deb http://overviewer.org/debian ./" >> /etc/apt/sources.list && \ @@ -27,6 +30,24 @@ RUN apt-get update && \ useradd -m minecraft && \ mkdir -p /home/minecraft/render /home/minecraft/server +# Copied from https://github.com/itzg/docker-minecraft-server + +# hook into docker BuildKit --platform support +# see https://docs.docker.com/engine/reference/builder/#automatic-platform-args-in-the-global-scope +ARG TARGETOS=linux +ARG TARGETARCH=amd64 +ARG TARGETVARIANT="" + +ARG EASY_ADD_VER=0.7.0 +ADD https://github.com/itzg/easy-add/releases/download/${EASY_ADD_VER}/easy-add_${TARGETOS}_${TARGETARCH}${TARGETVARIANT} /usr/bin/easy-add +RUN chmod +x /usr/bin/easy-add + +RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \ + --var version=1.4.7 --var app=rcon-cli --file {{.app}} \ + --from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz + +# End copy + COPY config/config.py /home/minecraft/config.py COPY entrypoint.sh /home/minecraft/entrypoint.sh COPY download_url.py /home/minecraft/download_url.py From ce413353125160df61b4f5472852dbdc01957efa Mon Sep 17 00:00:00 2001 From: Mitchell Skaggs Date: Fri, 20 Mar 2020 14:52:57 -0500 Subject: [PATCH 2/6] Add pre and post rcon-cli commands to entrypoint.sh --- .gitattributes | 2 ++ entrypoint.sh | 10 ++++++++++ 2 files changed, 12 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1312090 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +* text=auto +*.sh text eol=lf \ No newline at end of file diff --git a/entrypoint.sh b/entrypoint.sh index 28a254f..fdcaf29 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -12,6 +12,11 @@ CLIENT_URL=$(python3 /home/minecraft/download_url.py "$MINECRAFT_VERSION") echo "Using Client URL $CLIENT_URL." wget -N "${CLIENT_URL}" -O "${MINECRAFT_VERSION}.jar" -P /home/minecraft/.minecraft/versions/${MINECRAFT_VERSION}/ +if [ -n "$RCON_ARGS_PRE" ]; then + # shellcheck disable=SC2086 + rcon-cli $RCON_ARGS_PRE +fi + # Render the Map if [ "$RENDER_MAP" == "true" ]; then overviewer.py --config "$CONFIG_LOCATION" $ADDITIONAL_ARGS @@ -21,3 +26,8 @@ fi if [ "$RENDER_POI" == "true" ]; then overviewer.py --config "$CONFIG_LOCATION" --genpoi $ADDITIONAL_ARGS_POI fi + +if [ -n "$RCON_ARGS_POST" ]; then + # shellcheck disable=SC2086 + rcon-cli $RCON_ARGS_POST +fi From 0245b383ca6eccbc2e9c7936ff1711f346dcdecc Mon Sep 17 00:00:00 2001 From: Mitchell Skaggs Date: Fri, 20 Mar 2020 14:53:50 -0500 Subject: [PATCH 3/6] Add docs link for rcon-cli --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 914616d..7a4b1d9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,6 +16,7 @@ ENV RENDER_POI true ENV CONFIG_LOCATION /home/minecraft/config.py +# Docs for rcon-cli here: https://github.com/itzg/rcon-cli ENV RCON_ARGS_PRE "" ENV RCON_ARGS_POST "" From f92873d55f1893377c67dc33c2d40a8f4a3b5bf9 Mon Sep 17 00:00:00 2001 From: Mitchell Skaggs Date: Tue, 7 Apr 2020 22:27:05 -0500 Subject: [PATCH 4/6] Remove `easy-add` and install `rcon-cli` manually --- Dockerfile | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/Dockerfile b/Dockerfile index 37a6dbb..84a3b54 100644 --- a/Dockerfile +++ b/Dockerfile @@ -40,23 +40,10 @@ RUN apt-get update && \ useradd -m minecraft && \ mkdir -p /home/minecraft/render /home/minecraft/server -# Copied from https://github.com/itzg/docker-minecraft-server - -# hook into docker BuildKit --platform support -# see https://docs.docker.com/engine/reference/builder/#automatic-platform-args-in-the-global-scope -ARG TARGETOS=linux -ARG TARGETARCH=amd64 -ARG TARGETVARIANT="" - -ARG EASY_ADD_VER=0.7.0 -ADD https://github.com/itzg/easy-add/releases/download/${EASY_ADD_VER}/easy-add_${TARGETOS}_${TARGETARCH}${TARGETVARIANT} /usr/bin/easy-add -RUN chmod +x /usr/bin/easy-add - -RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \ - --var version=1.4.7 --var app=rcon-cli --file {{.app}} \ - --from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz - -# End copy +# Copied from https://github.com/itzg/easy-add +# Install rcon-cli +ADD https://github.com/itzg/rcon-cli/releases/download/1.4.7/rcon-cli_1.4.7_linux_amd64.tar.gz /tmp/rcon-cli.tgz +RUN tar -xf /tmp/rcon-cli.tgz -C /usr/local/bin rcon-cli && rm /tmp/rcon-cli.tgz COPY config/config.py /home/minecraft/config.py COPY entrypoint.sh /home/minecraft/entrypoint.sh From b9930ea292d326f587371213772a2300c423d8ee Mon Sep 17 00:00:00 2001 From: Mitchell Skaggs Date: Wed, 8 Apr 2020 17:08:03 -0500 Subject: [PATCH 5/6] Combine `rcon-cli` install into 1 RUN instruction to prevent leaving behind useless download layers --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 84a3b54..293e9f4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -40,10 +40,10 @@ RUN apt-get update && \ useradd -m minecraft && \ mkdir -p /home/minecraft/render /home/minecraft/server -# Copied from https://github.com/itzg/easy-add # Install rcon-cli -ADD https://github.com/itzg/rcon-cli/releases/download/1.4.7/rcon-cli_1.4.7_linux_amd64.tar.gz /tmp/rcon-cli.tgz -RUN tar -xf /tmp/rcon-cli.tgz -C /usr/local/bin rcon-cli && rm /tmp/rcon-cli.tgz +RUN wget "https://github.com/itzg/rcon-cli/releases/download/1.4.7/rcon-cli_1.4.7_linux_amd64.tar.gz" -O /tmp/rcon-cli.tgz && \ + tar -xf /tmp/rcon-cli.tgz -C /usr/local/bin rcon-cli && \ + rm /tmp/rcon-cli.tgz COPY config/config.py /home/minecraft/config.py COPY entrypoint.sh /home/minecraft/entrypoint.sh From b1fcbe07fe569e983b83fa2685307b48cdc9a0dd Mon Sep 17 00:00:00 2001 From: Mark Ide <546518+mide@users.noreply.github.com> Date: Sat, 25 Apr 2020 01:11:46 -0400 Subject: [PATCH 6/6] PR Suggestions --- Dockerfile | 14 +++++++++----- README.md | 6 ++++++ entrypoint.sh | 10 ++++++---- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index 293e9f4..f8a4295 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,9 +25,12 @@ ENV RENDER_SIGNS_JOINER "
" ENV CONFIG_LOCATION /home/minecraft/config.py -# Docs for rcon-cli here: https://github.com/itzg/rcon-cli -ENV RCON_ARGS_PRE "" -ENV RCON_ARGS_POST "" +# Install rcon-cli (https://github.com/itzg/rcon-cli). Perform a checksum check +# to make sure it hasn't changed from underneath us. +ENV RCON_CLI_URL "https://github.com/itzg/rcon-cli/releases/download/1.4.7/rcon-cli_1.4.7_linux_amd64.tar.gz" +ENV RCON_CLI_SHA256 "cae03daceb3c463f0979ed0586778fb236cfbb83585413a9a06b1e83bceefa20" +ENV RCON_CLI_ARGS_PRE_RENDER "" +ENV RCON_CLI_ARGS_POST_RENDER "" RUN apt-get update && \ apt-get install -y wget gnupg optipng && \ @@ -40,8 +43,9 @@ RUN apt-get update && \ useradd -m minecraft && \ mkdir -p /home/minecraft/render /home/minecraft/server -# Install rcon-cli -RUN wget "https://github.com/itzg/rcon-cli/releases/download/1.4.7/rcon-cli_1.4.7_linux_amd64.tar.gz" -O /tmp/rcon-cli.tgz && \ +# Install rcon-cli to support issuing RCON commands before/after the render +RUN wget "${RCON_CLI_URL}" -O "/tmp/rcon-cli.tgz" && \ + echo "${RCON_CLI_SHA256} /tmp/rcon-cli.tgz" | sha256sum -c - && \ tar -xf /tmp/rcon-cli.tgz -C /usr/local/bin rcon-cli && \ rm /tmp/rcon-cli.tgz diff --git a/README.md b/README.md index 3f179ab..d422b20 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,12 @@ docker run \ - `CONFIG_LOCATION` Default Value: `/home/minecraft/config.py`. Set to a different path to override the provided configuration. This only makes sense if you have a different configuration in a volume. +- `RCON_CLI_ARGS_POST_RENDER` + Default Value: _null_. Set to contain any [Minecraft RCON](https://wiki.vg/RCON) command you'd like to have run after the render completes. This uses [`itzg/rcon-cli`](https://github.com/itzg/rcon-cli), so please refer to that project for full list of available options. Could be used to issue `save on` to re-enable file writes once done rendering. + +- `RCON_CLI_ARGS_PRE_RENDER` + Default Value: _null_. Set to contain any [Minecraft RCON](https://wiki.vg/RCON) command you'd like to have run before the render starts. This uses [`itzg/rcon-cli`](https://github.com/itzg/rcon-cli), so please refer to that project for full list of available options. Could be used to issue `save off` to prevent file changes while rendering. + - `RENDER_MAP` Default Value: `true`. Set to `false` if you do not want to render the map. This is useful for POI only-updates. diff --git a/entrypoint.sh b/entrypoint.sh index 6b012c2..e7038a1 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -39,9 +39,10 @@ if grep -q "texturepath" "${CONFIG_LOCATION}"; then cp "${NEW_LOCATION}" "${OLD_LOCATION}" fi -if [ -n "$RCON_ARGS_PRE" ]; then +if [ -n "$RCON_CLI_ARGS_PRE_RENDER" ]; then + echo "Running rcon-cli before starting render..." # shellcheck disable=SC2086 - rcon-cli $RCON_ARGS_PRE + rcon-cli $RCON_CLI_ARGS_PRE_RENDER fi # Render the Map @@ -54,7 +55,8 @@ if [ "$RENDER_POI" == "true" ]; then overviewer.py --config "$CONFIG_LOCATION" --genpoi $ADDITIONAL_ARGS_POI fi -if [ -n "$RCON_ARGS_POST" ]; then +if [ -n "$RCON_CLI_ARGS_POST_RENDER" ]; then + echo "Running rcon-cli after finishing render..." # shellcheck disable=SC2086 - rcon-cli $RCON_ARGS_POST + rcon-cli $RCON_CLI_ARGS_POST_RENDER fi