mirror of
https://github.com/itzg/docker-minecraft-server.git
synced 2026-09-10 16:07:58 +00:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
78c24b580e |
@@ -138,7 +138,7 @@ jobs:
|
|||||||
uses: docker/setup-qemu-action@v3.1.0
|
uses: docker/setup-qemu-action@v3.1.0
|
||||||
|
|
||||||
- name: Build for test
|
- name: Build for test
|
||||||
uses: docker/build-push-action@v6.3.0
|
uses: docker/build-push-action@v5.4.0
|
||||||
with:
|
with:
|
||||||
platforms: linux/amd64
|
platforms: linux/amd64
|
||||||
tags: ${{ env.IMAGE_TO_TEST }}
|
tags: ${{ env.IMAGE_TO_TEST }}
|
||||||
@@ -176,7 +176,7 @@ jobs:
|
|||||||
password: ${{ github.token }}
|
password: ${{ github.token }}
|
||||||
|
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
uses: docker/build-push-action@v6.3.0
|
uses: docker/build-push-action@v5.4.0
|
||||||
if: github.actor == github.repository_owner
|
if: github.actor == github.repository_owner
|
||||||
with:
|
with:
|
||||||
platforms: ${{ matrix.platforms }}
|
platforms: ${{ matrix.platforms }}
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ jobs:
|
|||||||
uses: docker/setup-buildx-action@v3.4.0
|
uses: docker/setup-buildx-action@v3.4.0
|
||||||
|
|
||||||
- name: Confirm multi-arch build
|
- name: Confirm multi-arch build
|
||||||
uses: docker/build-push-action@v6.3.0
|
uses: docker/build-push-action@v5.4.0
|
||||||
with:
|
with:
|
||||||
platforms: ${{ matrix.platforms }}
|
platforms: ${{ matrix.platforms }}
|
||||||
# ensure latest base image is used
|
# ensure latest base image is used
|
||||||
@@ -65,7 +65,7 @@ jobs:
|
|||||||
cache-from: type=gha,scope=${{ matrix.variant }}
|
cache-from: type=gha,scope=${{ matrix.variant }}
|
||||||
|
|
||||||
- name: Build for test
|
- name: Build for test
|
||||||
uses: docker/build-push-action@v6.3.0
|
uses: docker/build-push-action@v5.4.0
|
||||||
with:
|
with:
|
||||||
# Only build single platform since loading multi-arch image into daemon fails with
|
# Only build single platform since loading multi-arch image into daemon fails with
|
||||||
# "docker exporter does not currently support exporting manifest lists"
|
# "docker exporter does not currently support exporting manifest lists"
|
||||||
|
|||||||
+4
-4
@@ -23,11 +23,11 @@ EXPOSE 25565
|
|||||||
ARG APPS_REV=1
|
ARG APPS_REV=1
|
||||||
ARG GITHUB_BASEURL=https://github.com
|
ARG GITHUB_BASEURL=https://github.com
|
||||||
|
|
||||||
ARG EASY_ADD_VERSION=0.8.7
|
ARG EASY_ADD_VERSION=0.8.6
|
||||||
ADD ${GITHUB_BASEURL}/itzg/easy-add/releases/download/${EASY_ADD_VERSION}/easy-add_${TARGETOS}_${TARGETARCH}${TARGETVARIANT} /usr/bin/easy-add
|
ADD ${GITHUB_BASEURL}/itzg/easy-add/releases/download/${EASY_ADD_VERSION}/easy-add_${TARGETOS}_${TARGETARCH}${TARGETVARIANT} /usr/bin/easy-add
|
||||||
RUN chmod +x /usr/bin/easy-add
|
RUN chmod +x /usr/bin/easy-add
|
||||||
|
|
||||||
ARG RESTIFY_VERSION=1.7.4
|
ARG RESTIFY_VERSION=1.7.3
|
||||||
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
||||||
--var version=${RESTIFY_VERSION} --var app=restify --file {{.app}} \
|
--var version=${RESTIFY_VERSION} --var app=restify --file {{.app}} \
|
||||||
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
||||||
@@ -37,7 +37,7 @@ RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
|||||||
--var version=${RCON_CLI_VERSION} --var app=rcon-cli --file {{.app}} \
|
--var version=${RCON_CLI_VERSION} --var app=rcon-cli --file {{.app}} \
|
||||||
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
||||||
|
|
||||||
ARG MC_MONITOR_VERSION=0.12.13
|
ARG MC_MONITOR_VERSION=0.12.12
|
||||||
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
||||||
--var version=${MC_MONITOR_VERSION} --var app=mc-monitor --file {{.app}} \
|
--var version=${MC_MONITOR_VERSION} --var app=mc-monitor --file {{.app}} \
|
||||||
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
||||||
@@ -47,7 +47,7 @@ RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
|||||||
--var version=${MC_SERVER_RUNNER_VERSION} --var app=mc-server-runner --file {{.app}} \
|
--var version=${MC_SERVER_RUNNER_VERSION} --var app=mc-server-runner --file {{.app}} \
|
||||||
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
||||||
|
|
||||||
ARG MC_HELPER_VERSION=1.39.9
|
ARG MC_HELPER_VERSION=1.39.3
|
||||||
ARG MC_HELPER_BASE_URL=${GITHUB_BASEURL}/itzg/mc-image-helper/releases/download/${MC_HELPER_VERSION}
|
ARG MC_HELPER_BASE_URL=${GITHUB_BASEURL}/itzg/mc-image-helper/releases/download/${MC_HELPER_VERSION}
|
||||||
# used for cache busting local copy of mc-image-helper
|
# used for cache busting local copy of mc-image-helper
|
||||||
ARG MC_HELPER_REV=1
|
ARG MC_HELPER_REV=1
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ do
|
|||||||
if [[ "$RCON_CMDS_STARTUP" ]]; then
|
if [[ "$RCON_CMDS_STARTUP" ]]; then
|
||||||
while read -r cmd; do
|
while read -r cmd; do
|
||||||
run_command "$cmd"
|
run_command "$cmd"
|
||||||
done <<< "$(echo -e "$RCON_CMDS_STARTUP")"
|
done <<< "$RCON_CMDS_STARTUP"
|
||||||
fi
|
fi
|
||||||
if
|
if
|
||||||
[[ -z "$RCON_CMDS_ON_CONNECT" ]] &&
|
[[ -z "$RCON_CMDS_ON_CONNECT" ]] &&
|
||||||
@@ -66,7 +66,7 @@ do
|
|||||||
logRcon "First Clients has Connected, running first connect cmds"
|
logRcon "First Clients has Connected, running first connect cmds"
|
||||||
while read -r cmd; do
|
while read -r cmd; do
|
||||||
run_command "$cmd"
|
run_command "$cmd"
|
||||||
done <<< "$(echo -e "$RCON_CMDS_FIRST_CONNECT")"
|
done <<< "$RCON_CMDS_FIRST_CONNECT"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# When a client joins
|
# When a client joins
|
||||||
@@ -74,13 +74,13 @@ do
|
|||||||
logRcon "Clients have Connected, running connect cmds"
|
logRcon "Clients have Connected, running connect cmds"
|
||||||
while read -r cmd; do
|
while read -r cmd; do
|
||||||
run_command "$cmd"
|
run_command "$cmd"
|
||||||
done <<< "$(echo -e "$RCON_CMDS_ON_CONNECT")"
|
done <<< "$RCON_CMDS_ON_CONNECT"
|
||||||
# When a client leaves
|
# When a client leaves
|
||||||
elif (( CURR_CLIENTCONNECTIONS < CLIENTCONNECTIONS )) && [[ "$RCON_CMDS_ON_DISCONNECT" ]]; then
|
elif (( CURR_CLIENTCONNECTIONS < CLIENTCONNECTIONS )) && [[ "$RCON_CMDS_ON_DISCONNECT" ]]; then
|
||||||
logRcon "Clients have Disconnected, running disconnect cmds"
|
logRcon "Clients have Disconnected, running disconnect cmds"
|
||||||
while read -r cmd; do
|
while read -r cmd; do
|
||||||
run_command "$cmd"
|
run_command "$cmd"
|
||||||
done <<< "$(echo -e "$RCON_CMDS_ON_DISCONNECT")"
|
done <<< "$RCON_CMDS_ON_DISCONNECT"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Last client connection
|
# Last client connection
|
||||||
@@ -89,7 +89,7 @@ do
|
|||||||
logRcon "ALL Clients have Disconnected, running last disconnect cmds"
|
logRcon "ALL Clients have Disconnected, running last disconnect cmds"
|
||||||
while read -r cmd; do
|
while read -r cmd; do
|
||||||
run_command "$cmd"
|
run_command "$cmd"
|
||||||
done <<< "$(echo -e "$RCON_CMDS_LAST_DISCONNECT")"
|
done <<< "$RCON_CMDS_LAST_DISCONNECT"
|
||||||
fi
|
fi
|
||||||
CLIENTCONNECTIONS=$CURR_CLIENTCONNECTIONS
|
CLIENTCONNECTIONS=$CURR_CLIENTCONNECTIONS
|
||||||
;;
|
;;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
An option to stop the server after a specified time has been added for niche applications (e.g. billing saving on AWS Fargate). The function is incompatible with the Autopause functionality, as they basically cancel out each other.
|
An option to stop the server after a specified time has been added for niche applications (e.g. billing saving on AWS Fargate). The function is incompatible with the Autopause functionality, as they basically cancel out each other.
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
|
|
||||||
the docker container variables have to be set accordingly (restart policy set to "no") and that the container has to be manually restarted.
|
the docker container variables have to be set accordingly (restart policy set to "no") and that the container has to be manually restarted.
|
||||||
|
|
||||||
@@ -25,6 +25,3 @@ The following environment variables define the behavior of auto-stopping:
|
|||||||
describes period of the daemonized state machine, that handles the stopping of the server
|
describes period of the daemonized state machine, that handles the stopping of the server
|
||||||
|
|
||||||
> To troubleshoot, add `DEBUG_AUTOSTOP=true` to see additional output
|
> To troubleshoot, add `DEBUG_AUTOSTOP=true` to see additional output
|
||||||
|
|
||||||
## Proxy Support
|
|
||||||
If you make use of PROXY Protocol, i.e. through something like HAProxy or Fly.io, you will need to enable it in your variety of server's configuration, and then set the `USES_PROXY_PROTOCOL` envar to `true`. This lets Autostop monitor the server, where it otherwise wouldn't
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
mkdocs-material == 9.5.29
|
mkdocs-material == 9.5.28
|
||||||
mkdocs-autorefs == 1.0.1
|
mkdocs-autorefs == 1.0.1
|
||||||
mkdocstrings == 0.25.1
|
mkdocstrings == 0.25.1
|
||||||
mkdocs-literate-nav == 0.6.1
|
mkdocs-literate-nav == 0.6.1
|
||||||
|
|||||||
@@ -16,14 +16,6 @@ To allow for the selection of experimental builds, set `PAPER_CHANNEL` to "exper
|
|||||||
docker run ... -e TYPE=PAPER -e PAPER_CHANNEL=experimental ...
|
docker run ... -e TYPE=PAPER -e PAPER_CHANNEL=experimental ...
|
||||||
```
|
```
|
||||||
|
|
||||||
!!! tip
|
|
||||||
|
|
||||||
If you see the following error, it likely means you need to set the env var `PAPER_CHANNEL` to "experimental"
|
|
||||||
|
|
||||||
```
|
|
||||||
No build found for version 1.21 with channel 'default'
|
|
||||||
```
|
|
||||||
|
|
||||||
If you are hosting your own copy of Paper you can override the download URL with `PAPER_DOWNLOAD_URL=<url>`.
|
If you are hosting your own copy of Paper you can override the download URL with `PAPER_DOWNLOAD_URL=<url>`.
|
||||||
|
|
||||||
If you have attached a host directory to the `/data` volume, then you can install plugins via the `plugins` subdirectory. You can also [attach a `/plugins` volume](../../mods-and-plugins/index.md#optional-plugins-mods-and-config-attach-points). If you add plugins while the container is running, you'll need to restart it to pick those up.
|
If you have attached a host directory to the `/data` volume, then you can install plugins via the `plugins` subdirectory. You can also [attach a `/plugins` volume](../../mods-and-plugins/index.md#optional-plugins-mods-and-config-attach-points). If you add plugins while the container is running, you'll need to restart it to pick those up.
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# shellcheck source=../scripts/start-utils
|
|
||||||
. "${SCRIPTS:-/}start-utils"
|
|
||||||
current_uptime() {
|
current_uptime() {
|
||||||
awk '{print $1}' /proc/uptime | cut -d . -f 1
|
awk '{print $1}' /proc/uptime | cut -d . -f 1
|
||||||
}
|
}
|
||||||
@@ -18,20 +16,14 @@ rcon_client_exists() {
|
|||||||
[[ -n "$(ps -ax -o comm | grep 'rcon-cli')" ]]
|
[[ -n "$(ps -ax -o comm | grep 'rcon-cli')" ]]
|
||||||
}
|
}
|
||||||
|
|
||||||
use_proxy() {
|
|
||||||
if isTrue "$USES_PROXY_PROTOCOL"; then
|
|
||||||
echo "--use-proxy"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
mc_server_listening() {
|
mc_server_listening() {
|
||||||
mc-monitor status $(use_proxy) --host "${SERVER_HOST:-localhost}" --port "$SERVER_PORT" --timeout 10s >&/dev/null
|
mc-monitor status --host "${SERVER_HOST:-localhost}" --port "$SERVER_PORT" --timeout 10s >& /dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
java_clients_connections() {
|
java_clients_connections() {
|
||||||
local connections
|
local connections
|
||||||
if java_running; then
|
if java_running ; then
|
||||||
if ! connections=$(mc-monitor status $(use_proxy) --host "${SERVER_HOST:-localhost}" --port "$SERVER_PORT" --show-player-count); then
|
if ! connections=$(mc-monitor status --host "${SERVER_HOST:-localhost}" --port "$SERVER_PORT" --show-player-count); then
|
||||||
# consider it a non-zero player count if the ping fails
|
# consider it a non-zero player count if the ping fails
|
||||||
# otherwise a laggy server with players connected could get paused
|
# otherwise a laggy server with players connected could get paused
|
||||||
connections=1
|
connections=1
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
"better-third-person",
|
"better-third-person",
|
||||||
"biomeinfo",
|
"biomeinfo",
|
||||||
"block-drops-jei-addon",
|
"block-drops-jei-addon",
|
||||||
"blur-forge",
|
|
||||||
"cherished-worlds",
|
"cherished-worlds",
|
||||||
"chunk-animator",
|
"chunk-animator",
|
||||||
"clickable-advancements",
|
"clickable-advancements",
|
||||||
@@ -67,6 +66,7 @@
|
|||||||
"more-overlays",
|
"more-overlays",
|
||||||
"mouse-tweaks",
|
"mouse-tweaks",
|
||||||
"neat",
|
"neat",
|
||||||
|
"necronomicon",
|
||||||
"nekos-enchanted-books",
|
"nekos-enchanted-books",
|
||||||
"no-recipe-book",
|
"no-recipe-book",
|
||||||
"no-nv-flash",
|
"no-nv-flash",
|
||||||
|
|||||||
@@ -1,78 +1,15 @@
|
|||||||
{
|
{
|
||||||
"globalExcludes": [
|
"globalExcludes": [
|
||||||
"3dskinlayers",
|
"3dskinlayers",
|
||||||
"ae2-emi-crafting",
|
|
||||||
"AmbientSounds",
|
|
||||||
"amecs",
|
|
||||||
"Animation_Overhaul",
|
|
||||||
"appleskin",
|
|
||||||
"auudio",
|
|
||||||
"axolotlbuckets",
|
|
||||||
"BadOptimizations",
|
|
||||||
"BetterAdvancements",
|
|
||||||
"betterbeds",
|
|
||||||
"BetterThirdPerson",
|
|
||||||
"BHMenu",
|
|
||||||
"blur",
|
|
||||||
"Boat-Item-View",
|
|
||||||
"bobby",
|
|
||||||
"cat_jam",
|
|
||||||
"chat_heads",
|
|
||||||
"chatanimation",
|
|
||||||
"cherishedworlds",
|
|
||||||
"citresewn",
|
"citresewn",
|
||||||
"clickadv",
|
|
||||||
"connector",
|
"connector",
|
||||||
"DisableCustomWorldsAdvice",
|
|
||||||
"drippyloadingscreen",
|
|
||||||
"eating-animation",
|
|
||||||
"emiffect",
|
|
||||||
"emitrades",
|
|
||||||
"entity_model_features",
|
"entity_model_features",
|
||||||
"entity_texture_features",
|
"entity_texture_features",
|
||||||
"entityculling",
|
|
||||||
"euphoriapatcher",
|
"euphoriapatcher",
|
||||||
"fallingleaves",
|
|
||||||
"fancymenu",
|
|
||||||
"fast-ip-ping",
|
|
||||||
"FauxCustomEntityData",
|
|
||||||
"GeckoLibIrisCompat",
|
|
||||||
"gpumemleakfix",
|
|
||||||
"Highlighter",
|
|
||||||
"ImmediatelyFast",
|
|
||||||
"indium",
|
|
||||||
"iris",
|
|
||||||
"iris-flywheel",
|
|
||||||
"ItemBorders",
|
|
||||||
"ItemLocks",
|
|
||||||
"language-reload",
|
|
||||||
"lazy-language-loader",
|
|
||||||
"LegendaryTooltips",
|
|
||||||
"loadmyresources",
|
|
||||||
"lootbeams",
|
|
||||||
"MindfulDarkness",
|
|
||||||
"MouseTweaks",
|
|
||||||
"nicer-skies",
|
|
||||||
"notenoughanimations",
|
"notenoughanimations",
|
||||||
"oculus",
|
"oculus",
|
||||||
"OverflowingBars",
|
|
||||||
"PickUpNotifier",
|
|
||||||
"PresenceFootsteps",
|
|
||||||
"Prism",
|
|
||||||
"reeses_sodium_options",
|
|
||||||
"ResourcePackOverrides",
|
|
||||||
"ryoamiclights",
|
"ryoamiclights",
|
||||||
"Searchables",
|
"yungsmenutweaks"
|
||||||
"seasonhud",
|
|
||||||
"ShoulderSurfing",
|
|
||||||
"skinlayers3d",
|
|
||||||
"sodium",
|
|
||||||
"sorted_enchantments",
|
|
||||||
"visuality",
|
|
||||||
"VR-Combat",
|
|
||||||
"YeetusExperimentus",
|
|
||||||
"yungsmenutweaks",
|
|
||||||
"Zoomify"
|
|
||||||
],
|
],
|
||||||
"globalForceIncludes": [],
|
"globalForceIncludes": [],
|
||||||
"modpacks": {}
|
"modpacks": {}
|
||||||
|
|||||||
@@ -52,12 +52,6 @@ else
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Download default configs to allow for consistent patching
|
|
||||||
for c in paper-global.yml paper-world-defaults.yml spigot.yml; do
|
|
||||||
DOWNLOAD_DEFAULT_CONFIGS+=",${PAPER_CONFIG_DEFAULTS_REPO}/${VERSION}/$c"
|
|
||||||
done
|
|
||||||
export DOWNLOAD_DEFAULT_CONFIGS
|
|
||||||
|
|
||||||
# Normalize on Spigot for downstream operations
|
# Normalize on Spigot for downstream operations
|
||||||
export FAMILY=SPIGOT
|
export FAMILY=SPIGOT
|
||||||
|
|
||||||
|
|||||||
@@ -64,9 +64,6 @@ patchLog4jConfig() {
|
|||||||
canUseRollingLogs=false
|
canUseRollingLogs=false
|
||||||
}
|
}
|
||||||
|
|
||||||
# Temporarily disable debugging output
|
|
||||||
oldState=$(shopt -po xtrace || true)
|
|
||||||
shopt -u -o xtrace
|
|
||||||
# Patch Log4j remote code execution vulnerability
|
# Patch Log4j remote code execution vulnerability
|
||||||
# See https://www.minecraft.net/en-us/article/important-message--security-vulnerability-java-edition
|
# See https://www.minecraft.net/en-us/article/important-message--security-vulnerability-java-edition
|
||||||
if versionLessThan 1.7; then
|
if versionLessThan 1.7; then
|
||||||
@@ -83,7 +80,6 @@ elif isType PURPUR && versionLessThan 1.18.1; then
|
|||||||
elif versionLessThan 1.18.1; then
|
elif versionLessThan 1.18.1; then
|
||||||
useFallbackJvmFlag=true
|
useFallbackJvmFlag=true
|
||||||
fi
|
fi
|
||||||
eval "$oldState"
|
|
||||||
|
|
||||||
if ${useFallbackJvmFlag}; then
|
if ${useFallbackJvmFlag}; then
|
||||||
JVM_OPTS="-Dlog4j2.formatMsgNoLookups=true ${JVM_OPTS}"
|
JVM_OPTS="-Dlog4j2.formatMsgNoLookups=true ${JVM_OPTS}"
|
||||||
@@ -231,12 +227,6 @@ MC_HEALTH_EXTRA_ARGS=(
|
|||||||
--use-server-list-ping
|
--use-server-list-ping
|
||||||
)
|
)
|
||||||
" > /data/.mc-health.env
|
" > /data/.mc-health.env
|
||||||
elif isTrue "$USES_PROXY_PROTOCOL"; then
|
|
||||||
echo "
|
|
||||||
MC_HEALTH_EXTRA_ARGS=(
|
|
||||||
--use-proxy
|
|
||||||
)
|
|
||||||
" > /data/.mc-health.env
|
|
||||||
else
|
else
|
||||||
rm -f /data/.mc-health.env
|
rm -f /data/.mc-health.env
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
. "${SCRIPTS:-/}start-utils"
|
. "${SCRIPTS:-/}start-utils"
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
handleDebugMode
|
|
||||||
|
|
||||||
: "${REPLACE_ENV_IN_PLACE:=${REPLACE_ENV_VARIABLES:-false}}"
|
: "${REPLACE_ENV_IN_PLACE:=${REPLACE_ENV_VARIABLES:-false}}"
|
||||||
: "${REPLACE_ENV_PATHS:=/data}"
|
: "${REPLACE_ENV_PATHS:=/data}"
|
||||||
@@ -14,7 +13,6 @@ handleDebugMode
|
|||||||
: "${REPLACE_ENV_VARIABLES_EXCLUDE_PATHS:=}"
|
: "${REPLACE_ENV_VARIABLES_EXCLUDE_PATHS:=}"
|
||||||
: "${PATCH_DEFINITIONS:=}"
|
: "${PATCH_DEFINITIONS:=}"
|
||||||
: "${DEBUG:=false}"
|
: "${DEBUG:=false}"
|
||||||
: "${DOWNLOAD_DEFAULT_CONFIGS:=}"
|
|
||||||
|
|
||||||
if isTrue "${REPLACE_ENV_IN_PLACE}"; then
|
if isTrue "${REPLACE_ENV_IN_PLACE}"; then
|
||||||
log "Replacing env variables in ${REPLACE_ENV_PATHS} that match the prefix '$REPLACE_ENV_VARIABLE_PREFIX' ..."
|
log "Replacing env variables in ${REPLACE_ENV_PATHS} that match the prefix '$REPLACE_ENV_VARIABLE_PREFIX' ..."
|
||||||
@@ -27,16 +25,6 @@ if isTrue "${REPLACE_ENV_IN_PLACE}"; then
|
|||||||
"${REPLACE_ENV_PATHS[@]}"
|
"${REPLACE_ENV_PATHS[@]}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $DOWNLOAD_DEFAULT_CONFIGS ]]; then
|
|
||||||
log "Downloading default configs, if needed"
|
|
||||||
if ! mc-image-helper mcopy \
|
|
||||||
--to /data/config \
|
|
||||||
--skip-existing --skip-up-to-date=false \
|
|
||||||
"$DOWNLOAD_DEFAULT_CONFIGS" 2> /dev/null; then
|
|
||||||
log "WARN: one or more default config files were not available from $DOWNLOAD_DEFAULT_CONFIGS"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ${PATCH_DEFINITIONS} ]]; then
|
if [[ ${PATCH_DEFINITIONS} ]]; then
|
||||||
log "Applying patch definitions from ${PATCH_DEFINITIONS}"
|
log "Applying patch definitions from ${PATCH_DEFINITIONS}"
|
||||||
mc-image-helper patch \
|
mc-image-helper patch \
|
||||||
|
|||||||
+2
-112
@@ -161,121 +161,11 @@ function normalizeMemSize() {
|
|||||||
echo $((val * scale))
|
echo $((val * scale))
|
||||||
}
|
}
|
||||||
|
|
||||||
function compare_version() {
|
|
||||||
local left_version=$1
|
|
||||||
local comparison=$2
|
|
||||||
local right_version=$3
|
|
||||||
|
|
||||||
if [[ -z "$left_version" ]]; then
|
|
||||||
echo "Left version is required"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z "$right_version" ]]; then
|
|
||||||
echo "Right version is required"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Handle version channels ('a', 'b', or numeric)
|
|
||||||
if [[ $left_version == a* || $left_version == b* ]]; then
|
|
||||||
left_version=${left_version:1}
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $right_version == a* || $right_version == b* ]]; then
|
|
||||||
right_version=${right_version:1}
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
local left_version_channel=${left_version:0:1}
|
|
||||||
if [[ $left_version_channel =~ [0-9] ]]; then
|
|
||||||
left_version_channel='r'
|
|
||||||
fi
|
|
||||||
|
|
||||||
local right_version_channel=${right_version:0:1}
|
|
||||||
if [[ $right_version_channel =~ [0-9] ]]; then
|
|
||||||
right_version_channel='r'
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $comparison == "lt" && $left_version_channel < $right_version_channel ]]; then
|
|
||||||
return 0
|
|
||||||
elif [[ $comparison == "lt" && $left_version_channel > $right_version_channel ]]; then
|
|
||||||
return 1
|
|
||||||
elif [[ $comparison == "gt" && $left_version_channel > $right_version_channel ]]; then
|
|
||||||
return 0
|
|
||||||
elif [[ $comparison == "gt" && $left_version_channel < $right_version_channel ]]; then
|
|
||||||
return 1
|
|
||||||
elif [[ $comparison == "le" && $left_version_channel < $right_version_channel ]]; then
|
|
||||||
return 0
|
|
||||||
elif [[ $comparison == "le" && $left_version_channel == $right_version_channel ]]; then
|
|
||||||
return 0
|
|
||||||
elif [[ $comparison == "ge" && $left_version_channel > $right_version_channel ]]; then
|
|
||||||
return 0
|
|
||||||
elif [[ $comparison == "ge" && $left_version_channel == $right_version_channel ]]; then
|
|
||||||
return 0
|
|
||||||
elif [[ $comparison == "eq" && $left_version_channel == $right_version_channel ]]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Compare the versions using sort -V
|
|
||||||
local result
|
|
||||||
|
|
||||||
case $comparison in
|
|
||||||
"lt")
|
|
||||||
if [[ $(echo -e "$left_version\n$right_version" | sort -V | head -n1) == "$left_version" && "$left_version" != "$right_version" ]]; then
|
|
||||||
result=0
|
|
||||||
else
|
|
||||||
result=1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
"le")
|
|
||||||
if [[ $(echo -e "$left_version\n$right_version" | sort -V | head -n1) == "$left_version" ]]; then
|
|
||||||
result=0
|
|
||||||
else
|
|
||||||
result=1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
"eq")
|
|
||||||
if [[ "$left_version" == "$right_version" ]]; then
|
|
||||||
result=0
|
|
||||||
else
|
|
||||||
result=1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
"ge")
|
|
||||||
if [[ $(echo -e "$left_version\n$right_version" | sort -V | tail -n1) == "$left_version" ]]; then
|
|
||||||
result=0
|
|
||||||
else
|
|
||||||
result=1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
"gt")
|
|
||||||
if [[ $(echo -e "$left_version\n$right_version" | sort -V | tail -n1) == "$left_version" && "$left_version" != "$right_version" ]]; then
|
|
||||||
result=0
|
|
||||||
else
|
|
||||||
result=1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Unsupported comparison operator: $comparison"
|
|
||||||
return 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
return $result
|
|
||||||
}
|
|
||||||
|
|
||||||
function versionLessThan() {
|
function versionLessThan() {
|
||||||
local oldState
|
|
||||||
# The return status when listing options is zero if all optnames are enabled, non- zero otherwise.
|
|
||||||
oldState=$(shopt -po xtrace || true)
|
|
||||||
shopt -u -o xtrace
|
|
||||||
|
|
||||||
# Use if-else since strict mode might be enabled
|
# Use if-else since strict mode might be enabled
|
||||||
if compare_version "${VERSION}" "lt" "${1?}"; then
|
if mc-image-helper compare-versions "${VERSION}" lt "${1?}"; then
|
||||||
eval "$oldState"
|
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
eval "$oldState"
|
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -452,7 +342,7 @@ function ensureRemoveAllModsOff() {
|
|||||||
reason=${1?}
|
reason=${1?}
|
||||||
|
|
||||||
if isTrue "${REMOVE_OLD_MODS:-false}"; then
|
if isTrue "${REMOVE_OLD_MODS:-false}"; then
|
||||||
log "WARNING using REMOVE_OLD_MODS interferes with $reason -- it is now disabled"
|
log "WARNING using REMOVE_OLDS_MODS interferes with $reason -- it is now disabled"
|
||||||
REMOVE_OLD_MODS=false
|
REMOVE_OLD_MODS=false
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user