From 1fb04c069c0db3a9abe7082629d96703968713a2 Mon Sep 17 00:00:00 2001 From: Geoff Bourne Date: Mon, 30 May 2022 13:07:25 -0500 Subject: [PATCH] Place EULA file into subdir managed by ServerSetup (#1543) --- .gitattributes | 19 +----- Dockerfile | 150 ++++++++++++++++++++--------------------- scripts/start-deployCF | 12 ++++ 3 files changed, 89 insertions(+), 92 deletions(-) diff --git a/.gitattributes b/.gitattributes index bdb0cab..5f3cd51 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,17 +1,2 @@ -# Auto detect text files and perform LF normalization -* text=auto - -# Custom for Visual Studio -*.cs diff=csharp - -# Standard to msysgit -*.doc diff=astextplain -*.DOC diff=astextplain -*.docx diff=astextplain -*.DOCX diff=astextplain -*.dot diff=astextplain -*.DOT diff=astextplain -*.pdf diff=astextplain -*.PDF diff=astextplain -*.rtf diff=astextplain -*.RTF diff=astextplain +# Auto detect text files and perform LF normalization +* text=lf diff --git a/Dockerfile b/Dockerfile index d59c368..22e38e0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,75 +1,75 @@ -# syntax = docker/dockerfile:1.3 - -ARG BASE_IMAGE=eclipse-temurin:17-jre-focal -FROM ${BASE_IMAGE} - -# CI system should set this to a hash or git revision of the build directory and it's contents to -# ensure consistent cache updates. -ARG BUILD_FILES_REV=1 -RUN --mount=target=/build,source=build \ - REV=${BUILD_FILES_REV} /build/run.sh install-packages - -RUN --mount=target=/build,source=build \ - REV=${BUILD_FILES_REV} /build/run.sh setup-user - -COPY --chmod=644 files/sudoers* /etc/sudoers.d - -EXPOSE 25565 25575 - -# hook into docker BuildKit --platform support -# see https://docs.docker.com/engine/reference/builder/#automatic-platform-args-in-the-global-scope -ARG TARGETOS -ARG TARGETARCH -ARG TARGETVARIANT - -ARG EASY_ADD_VER=0.7.1 -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.2.0 --var app=restify --file {{.app}} \ - --from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz - -RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \ - --var version=1.6.0 --var app=rcon-cli --file {{.app}} \ - --from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz - -RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \ - --var version=0.10.3 --var app=mc-monitor --file {{.app}} \ - --from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz - -RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \ - --var version=1.8.1 --var app=mc-server-runner --file {{.app}} \ - --from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz - -RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \ - --var version=0.1.1 --var app=maven-metadata-release --file {{.app}} \ - --from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz - -ARG MC_HELPER_VERSION=1.16.11 -ARG MC_HELPER_BASE_URL=https://github.com/itzg/mc-image-helper/releases/download/v${MC_HELPER_VERSION} -RUN curl -fsSL ${MC_HELPER_BASE_URL}/mc-image-helper-${MC_HELPER_VERSION}.tgz \ - | tar -C /usr/share -zxf - \ - && ln -s /usr/share/mc-image-helper-${MC_HELPER_VERSION}/bin/mc-image-helper /usr/bin - -VOLUME ["/data"] -WORKDIR /data - -STOPSIGNAL SIGTERM - -# End user MUST set EULA and change RCON_PASSWORD -ENV TYPE=VANILLA VERSION=LATEST EULA="" UID=1000 GID=1000 RCON_PASSWORD=minecraft - -COPY --chmod=755 scripts/start* / -COPY --chmod=755 bin/ /usr/local/bin/ -COPY --chmod=755 bin/mc-health /health.sh -COPY --chmod=644 files/server.properties /tmp/server.properties -COPY --chmod=644 files/log4j2.xml /tmp/log4j2.xml -COPY --chmod=755 files/autopause /autopause -COPY --chmod=755 files/autostop /autostop -COPY --chmod=755 files/rconcmds /rconcmds - -RUN dos2unix /start* /autopause/* /autostop/* /rconcmds/* - -ENTRYPOINT [ "/start" ] -HEALTHCHECK --start-period=1m CMD mc-health +# syntax = docker/dockerfile:1.3 + +ARG BASE_IMAGE=eclipse-temurin:17-jre-focal +FROM ${BASE_IMAGE} + +# CI system should set this to a hash or git revision of the build directory and it's contents to +# ensure consistent cache updates. +ARG BUILD_FILES_REV=1 +RUN --mount=target=/build,source=build \ + REV=${BUILD_FILES_REV} /build/run.sh install-packages + +RUN --mount=target=/build,source=build \ + REV=${BUILD_FILES_REV} /build/run.sh setup-user + +COPY --chmod=644 files/sudoers* /etc/sudoers.d + +EXPOSE 25565 25575 + +# hook into docker BuildKit --platform support +# see https://docs.docker.com/engine/reference/builder/#automatic-platform-args-in-the-global-scope +ARG TARGETOS +ARG TARGETARCH +ARG TARGETVARIANT + +ARG EASY_ADD_VER=0.7.1 +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.2.0 --var app=restify --file {{.app}} \ + --from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz + +RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \ + --var version=1.6.0 --var app=rcon-cli --file {{.app}} \ + --from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz + +RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \ + --var version=0.10.3 --var app=mc-monitor --file {{.app}} \ + --from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz + +RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \ + --var version=1.8.1 --var app=mc-server-runner --file {{.app}} \ + --from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz + +RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \ + --var version=0.1.1 --var app=maven-metadata-release --file {{.app}} \ + --from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz + +ARG MC_HELPER_VERSION=1.17.0 +ARG MC_HELPER_BASE_URL=https://github.com/itzg/mc-image-helper/releases/download/v${MC_HELPER_VERSION} +RUN curl -fsSL ${MC_HELPER_BASE_URL}/mc-image-helper-${MC_HELPER_VERSION}.tgz \ + | tar -C /usr/share -zxf - \ + && ln -s /usr/share/mc-image-helper-${MC_HELPER_VERSION}/bin/mc-image-helper /usr/bin + +VOLUME ["/data"] +WORKDIR /data + +STOPSIGNAL SIGTERM + +# End user MUST set EULA and change RCON_PASSWORD +ENV TYPE=VANILLA VERSION=LATEST EULA="" UID=1000 GID=1000 RCON_PASSWORD=minecraft + +COPY --chmod=755 scripts/start* / +COPY --chmod=755 bin/ /usr/local/bin/ +COPY --chmod=755 bin/mc-health /health.sh +COPY --chmod=644 files/server.properties /tmp/server.properties +COPY --chmod=644 files/log4j2.xml /tmp/log4j2.xml +COPY --chmod=755 files/autopause /autopause +COPY --chmod=755 files/autostop /autostop +COPY --chmod=755 files/rconcmds /rconcmds + +RUN dos2unix /start* /autopause/* /autostop/* /rconcmds/* + +ENTRYPOINT [ "/start" ] +HEALTHCHECK --start-period=1m CMD mc-health diff --git a/scripts/start-deployCF b/scripts/start-deployCF index d30fdea..8214eb6 100755 --- a/scripts/start-deployCF +++ b/scripts/start-deployCF @@ -210,6 +210,18 @@ EOF fi fi +# Modpacks that use https://github.com/BloodyMods/ServerStarter will sometimes specify an +# extra subpath where all the server files get installed. Need to transplant EULA file there. +serverSetupConfig=$(find "${FTB_BASE_DIR}" -type f -name server-setup-config.yaml) +if [[ $serverSetupConfig && $serverSetupConfig != "~" ]]; then + if baseInstallPath=$(mc-image-helper yaml-path --file "$serverSetupConfig" ".install.baseInstallPath"); then + resolvedBaseInstallPath="$(dirname "$serverSetupConfig")/${baseInstallPath}" + mkdir -p "$resolvedBaseInstallPath" + + cp -n /data/eula.txt "${resolvedBaseInstallPath}/eula.txt" + fi +fi + FTB_SERVER_START="$startScript" export FTB_SERVER_START