Compare commits

..

12 Commits

Author SHA1 Message Date
Geoff Bourne
f7b58fbbb1 Fix PATH to include java when needed 2021-02-10 14:51:24 -06:00
Geoff Bourne
eccfa444a9 Auto-merging via docker-versions-create 2021-02-10 14:02:05 -06:00
Geoff Bourne
e831d25706 Merged latest from master 2021-02-08 21:18:28 -06:00
Geoff Bourne
12e931332b Auto-merging via docker-versions-create
CONFLICT (content): Merge conflict in Dockerfile
2021-02-07 18:06:06 -06:00
Geoff Bourne
ceee9eddc9 ci: restored base image to ubuntu and install openjdk-8 2021-02-06 15:53:59 -06:00
Geoff Bourne
60ba668743 Merge branch 'master' into java8-multiarch
# Conflicts:
#	Dockerfile
2021-02-06 15:49:16 -06:00
Geoff Bourne
fd1b15e01f ci: Added java8 variant of multiarch 2021-02-06 15:44:02 -06:00
Geoff Bourne
f856276d71 Upgraded multiarch to Java 11 2021-02-06 15:22:15 -06:00
Geoff Bourne
0300854c46 Merge branch 'master' into multiarch 2021-02-06 15:21:53 -06:00
Geoff Bourne
f06e9f5ede Merge branch 'master' into multiarch 2021-02-06 14:52:35 -06:00
Geoff Bourne
8d3ca813ed Auto-merging via docker-versions-create 2021-01-29 21:07:00 -06:00
Geoff Bourne
e97a00e61d Auto-merging via docker-versions-create 2021-01-12 17:28:11 -06:00
14 changed files with 75 additions and 78 deletions

View File

@@ -1,10 +1,11 @@
FROM adoptopenjdk:15-jre FROM ubuntu:18.04
LABEL org.opencontainers.image.authors="Geoff Bourne <itzgeoff@gmail.com>" LABEL org.opencontainers.image.authors="Geoff Bourne <itzgeoff@gmail.com>"
RUN apt-get update \ RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive \ && DEBIAN_FRONTEND=noninteractive \
apt-get install -y \ apt-get install -y \
openjdk-8-jre-headless \
imagemagick \ imagemagick \
gosu \ gosu \
sudo \ sudo \

View File

@@ -132,7 +132,7 @@ services:
EULA: "TRUE" EULA: "TRUE"
volumes: volumes:
# attach the relative directory 'data' to the container's /data path # attach the relative directory 'data' to the container's /data path
- ./data:/data ./data:/data
``` ```
## Versions ## Versions
@@ -528,9 +528,6 @@ A [Mohist](https://github.com/Mohist-Community/Mohist) server can be used with
> **NOTE** there are limited base versions supported, so you will also need to set `VERSION`, such as "1.12.2" > **NOTE** there are limited base versions supported, so you will also need to set `VERSION`, such as "1.12.2"
By default the latest build will be used; however, a specific build number can be selected by setting `MOHIST_BUILD`, such as
-e VERSION=1.16.5 -e MOHIST_BUILD=374
## Running a Catserver type server ## Running a Catserver type server
@@ -732,14 +729,16 @@ every time you want to create new Minecraft server, you can now use
``` ```
minecraft-server: minecraft-server:
image: itzg/minecraft-server
ports: ports:
- "25565:25565" - "25565:25565"
environment: environment:
EULA: "TRUE" EULA: "TRUE"
image: itzg/minecraft-server
container_name: mc
tty: true tty: true
stdin_open: true stdin_open: true
restart: always restart: always
@@ -947,11 +946,7 @@ It determines the server-side viewing distance.
If you want to create the Minecraft level with a specific seed, use `SEED`, such as If you want to create the Minecraft level with a specific seed, use `SEED`, such as
-e SEED=1785852800490497919 docker run -d -e SEED=1785852800490497919 ...
If using a negative value for the seed, make sure to quote the value such as:
-e SEED="-1785852800490497919"
### Game Mode ### Game Mode
@@ -973,13 +968,16 @@ For example:
The message of the day, shown below each server entry in the UI, can be changed with the `MOTD` environment variable, such as The message of the day, shown below each server entry in the UI, can be changed with the `MOTD` environment variable, such as
-e MOTD="My Server" docker run -d -e 'MOTD=My Server' ...
If you leave it off, a default is computed from the server type and version, such as If you leave it off, a default is computed from the server type and version, such as
A Paper Minecraft Server powered by Docker A Paper Minecraft Server powered by Docker
That way you can easily differentiate between several servers you may have started. when `TYPE` is `PAPER`. That way you can easily differentiate between several servers you may have started.
_The example shows how to specify a server message of the day that contains spaces by putting quotes
around the whole thing._
### PVP Mode ### PVP Mode
@@ -1154,11 +1152,9 @@ For some cases, if e.g. after removing mods, it could be necessary to startup mi
### Enable Remote JMX for Profiling ### Enable Remote JMX for Profiling
To enable remote JMX, such as for profiling with VisualVM or JMC, add the environment variable `ENABLE_JMX=true`, set `JMX_HOST` to the IP/host running the Docker container, and add a port forwarding of TCP port 7091, such as: To enable remote JMX, such as for profiling with VisualVM or JMC, add the environment variable `ENABLE_JMX=true` and add a port forwarding of TCP port 7091, such as:
``` -e ENABLE_JMX=true -p 7091:7091
-e ENABLE_JMX=true -e JMX_HOST=$HOSTNAME -p 7091:7091
```
### Enable Aikar's Flags ### Enable Aikar's Flags

View File

@@ -2,7 +2,7 @@ version: '3.2'
services: services:
mc: mc:
image: itzg/minecraft-server:java8 image: itzg/minecraft-server
volumes: volumes:
- ./modpacks:/modpacks:ro - ./modpacks:/modpacks:ro
environment: environment:

View File

@@ -0,0 +1,20 @@
version: "3.7"
services:
mc:
image: itzg/minecraft-server
ports:
- 25565:25565
volumes:
# Attach .../Curse/Minecraft/Instances for use at /instances
- ./Instances:/instances:ro
# Attach /data as usual
- ./ServerData:/data
environment:
EULA: "TRUE"
# Modpacks generally need more memory, so let's give at 2 GB
MEMORY: 2G
# Use new CURSE_INSTANCE type
TYPE: CURSE_INSTANCE
# Reference directory of or full path to minecraftinstance.json
CURSE_INSTANCE_JSON: /instances/FTB Presents SkyFactory 3

View File

@@ -2,7 +2,7 @@ version: "3.7"
services: services:
mc: mc:
image: itzg/minecraft-server:java8 image: itzg/minecraft-server
ports: ports:
# expose the Minecraft server port outside of container # expose the Minecraft server port outside of container
- 25565:25565 - 25565:25565

View File

@@ -2,8 +2,8 @@ version: "3.7"
services: services:
mc: mc:
# FTBA support is only available in non-Alpine images # FTBA support is only available in multiarch image tag
image: itzg/minecraft-server:java8-multiarch image: itzg/minecraft-server:multiarch
ports: ports:
# expose the Minecraft server port outside of container # expose the Minecraft server port outside of container
- 25565:25565 - 25565:25565

View File

@@ -5,7 +5,7 @@ version: '3'
services: services:
minecraft: minecraft:
image: itzg/minecraft-server:java8 image: itzg/minecraft-server
ports: ports:
- "25565:25565" - "25565:25565"
volumes: volumes:

View File

@@ -54,6 +54,7 @@ if [[ $RCON_PASSWORD_FILE ]]; then
log "" log ""
fi fi
export SERVER_PROPERTIES=/data/server.properties
export VERSIONS_JSON=https://launchermeta.mojang.com/mc/game/version_manifest.json export VERSIONS_JSON=https://launchermeta.mojang.com/mc/game/version_manifest.json
case "X$VERSION" in case "X$VERSION" in
@@ -93,10 +94,6 @@ case "${TYPE^^}" in
;; ;;
FORGE) FORGE)
log "**********************************************************************"
log "WARNING: The image tag itzg/minecraft-server:java8 is recommended"
log " since some mods require Java 8"
log "**********************************************************************"
exec ${SCRIPTS:-/}start-deployForge "$@" exec ${SCRIPTS:-/}start-deployForge "$@"
;; ;;
@@ -108,11 +105,7 @@ case "${TYPE^^}" in
exec ${SCRIPTS:-/}start-deployFTBA "$@" exec ${SCRIPTS:-/}start-deployFTBA "$@"
;; ;;
FTB|CURSEFORGE) CURSEFORGE|FTB)
log "**********************************************************************"
log "WARNING: The image tag itzg/minecraft-server:java8 is recommended"
log " since some mods require Java 8"
log "**********************************************************************"
exec ${SCRIPTS:-/}start-deployCF "$@" exec ${SCRIPTS:-/}start-deployCF "$@"
;; ;;

View File

@@ -43,9 +43,6 @@ if ! [ -f "${ftbInstallMarker}" ] || [ $(cat "${ftbInstallMarker}") != "${FTB_MO
echo "${FTB_MODPACK_ID}=${FTB_MODPACK_VERSION_ID}" > ${ftbInstallMarker} echo "${FTB_MODPACK_ID}=${FTB_MODPACK_VERSION_ID}" > ${ftbInstallMarker}
writeEula writeEula
# some modpacks result in --w----r-- permissions
chmod a+r version.json
else else
log "FTB modpack ID ${FTB_MODPACK_ID}, version ID ${FTB_MODPACK_VERSION_ID} is ready to go" log "FTB modpack ID ${FTB_MODPACK_ID}, version ID ${FTB_MODPACK_VERSION_ID} is ready to go"
fi fi

View File

@@ -6,7 +6,6 @@ set -e
isDebugging && set -x isDebugging && set -x
requireVar VANILLA_VERSION requireVar VANILLA_VERSION
: ${MOHIST_BUILD:=lastSuccessfulBuild}
mohistJobs=https://ci.codemc.io/job/Mohist-Community/job/ mohistJobs=https://ci.codemc.io/job/Mohist-Community/job/
mohistJob=${mohistJobs}Mohist-${VANILLA_VERSION}/ mohistJob=${mohistJobs}Mohist-${VANILLA_VERSION}/
@@ -18,12 +17,12 @@ if ! curl -X HEAD -o /dev/null -fsSL "${mohistJob}"; then
exit 1 exit 1
fi fi
buildRelPath=$( latestBuildRelPath=$(
curl -fsSL "${mohistJob}${MOHIST_BUILD}/api/json" | curl -fsSL "${mohistJob}lastSuccessfulBuild/api/json" |
jq -r '.artifacts[0].relativePath' jq -r '.artifacts[0].relativePath'
) )
baseName=$(basename "${buildRelPath}") baseName=$(basename "${latestBuildRelPath}")
if [[ ${baseName} != *-server.jar* ]]; then if [[ ${baseName} != *-server.jar* ]]; then
log "ERROR: mohist build for ${VANILLA_VERSION} is not a valid server jar, found ${baseName}" log "ERROR: mohist build for ${VANILLA_VERSION} is not a valid server jar, found ${baseName}"
log " check https://ci.codemc.io/job/Mohist-Community/ for available versions" log " check https://ci.codemc.io/job/Mohist-Community/ for available versions"
@@ -35,7 +34,7 @@ export SERVER="/data/${baseName}"
if [ ! -f ${SERVER} ]; then if [ ! -f ${SERVER} ]; then
log "Downloading ${baseName}" log "Downloading ${baseName}"
curl -o "${SERVER}" -fsSL "${mohistJob}${MOHIST_BUILD}/artifact/${buildRelPath}" curl -o "${SERVER}" -fsSL "${mohistJob}lastSuccessfulBuild/artifact/${latestBuildRelPath}"
fi fi
export SKIP_LOG4J_CONFIG=true export SKIP_LOG4J_CONFIG=true

View File

@@ -57,9 +57,8 @@ else
fi fi
log "Removing old PaperMC versions ..." log "Removing old PaperMC versions ..."
for f in paper-*.jar; do paperJarSearchString=${SERVER/$build/[0-9]*}
[[ $f != $SERVER ]] && rm $f find . -maxdepth 1 -name "$paperJarSearchString" ! -name "$SERVER" -delete -print
done
log "Downloading PaperMC $VANILLA_VERSION (build $build) ..." log "Downloading PaperMC $VANILLA_VERSION (build $build) ..."
curl -fsSL -o "$SERVER" "${zarg[@]}" \ curl -fsSL -o "$SERVER" "${zarg[@]}" \

View File

@@ -5,7 +5,7 @@
: ${ENV_VARIABLE_PREFIX:=CFG_} : ${ENV_VARIABLE_PREFIX:=CFG_}
if isTrue "${REPLACE_ENV_VARIABLES}"; then if isTrue "${REPLACE_ENV_VARIABLES}"; then
log "Replacing env variables in configs that match the prefix $ENV_VARIABLE_PREFIX ..." log "Replacing env variables in configs that match the prefix $ENV_VARIABLE_PREFIX..."
# File excludes # File excludes
fileExcludes= fileExcludes=
@@ -22,30 +22,28 @@ if isTrue "${REPLACE_ENV_VARIABLES}"; then
isDebugging && echo "Using find file exclusions: $fileExcludes" isDebugging && echo "Using find file exclusions: $fileExcludes"
isDebugging && echo "Using find directory exclusions: $dirExcludes" isDebugging && echo "Using find directory exclusions: $dirExcludes"
for name in $(compgen -v $ENV_VARIABLE_PREFIX); do while IFS='=' read -r name value ; do
# check if name of env variable matches the prefix # check if name of env variable matches the prefix
# sanity check environment variables to avoid code injections # sanity check environment variables to avoid code injections
# Read content from file environment if [[ "$name" = $ENV_VARIABLE_PREFIX* ]] \
if [[ $name = *"_FILE" ]]; then && [[ $value =~ ^[0-9a-zA-Z_:/=?.+\-]*$ ]] \
value=$(<${!name}) && [[ $name =~ ^[0-9a-zA-Z_\-]*$ ]]; then
name="${name%_FILE}" # Read content from file environment
else if [[ $name = *"_FILE" ]] && [[ -f $value ]]; then
value=${!name} name="${name/_FILE/}"
value=$(<$value)
fi
log "Replacing $name with $value ..."
find /data/ \
$dirExcludes \
-type f \
\( -name "*.yml" -or -name "*.yaml" -or -name "*.txt" -or -name "*.cfg" \
-or -name "*.conf" -or -name "*.properties" \) \
$fileExcludes \
-exec sed -i 's#${'"$name"'}#'"$value"'#g' {} \;
fi fi
done < <(env)
log "Replacing $name with $value ..."
value=${value//\\/\\\\}
value=${value//#/\\#}
find /data/ \
$dirExcludes \
-type f \
\( -name "*.yml" -or -name "*.yaml" -or -name "*.txt" -or -name "*.cfg" \
-or -name "*.conf" -or -name "*.properties" \) \
$fileExcludes \
-exec sed -i 's#${'"$name"'}#'"$value"'#g' {} \;
done
fi fi
exec ${SCRIPTS:-/}start-minecraftFinalSetup $@ exec ${SCRIPTS:-/}start-minecraftFinalSetup $@

View File

@@ -2,8 +2,6 @@
. ${SCRIPTS:-/}start-utils . ${SCRIPTS:-/}start-utils
: ${SERVER_PROPERTIES:=/data/server.properties}
# FUNCTIONS # FUNCTIONS
function setServerProp { function setServerProp {
local prop=$1 local prop=$1
@@ -14,15 +12,10 @@ function setServerProp {
TRUE|FALSE) TRUE|FALSE)
var=${var,,} ;; var=${var,,} ;;
esac esac
if grep "${prop}" "$SERVER_PROPERTIES" > /dev/null; then log "Setting ${prop} to '${var}' in ${SERVER_PROPERTIES}"
log "Setting ${prop} to '${var}' in ${SERVER_PROPERTIES}" sed -i "/^${prop}\s*=/ c ${prop}=${var//\\/\\\\}" "$SERVER_PROPERTIES"
sed -i "/^${prop}\s*=/ c ${prop}=${var//\\/\\\\}" "$SERVER_PROPERTIES"
else
log "Adding ${prop} with '${var}' in ${SERVER_PROPERTIES}"
echo "${prop}=${var//\\/\\\\}" >> "$SERVER_PROPERTIES"
fi
else else
isDebugging && log "Skip setting ${prop}" log "Skip setting ${prop}"
fi fi
} }

View File

@@ -84,6 +84,7 @@ if [ -n "$JVM_DD_OPTS" ]; then
fi fi
if isTrue ${ENABLE_JMX}; then if isTrue ${ENABLE_JMX}; then
: ${JMX_HOST:=0.0.0.0}
: ${JMX_PORT:=7091} : ${JMX_PORT:=7091}
JVM_OPTS="${JVM_OPTS} JVM_OPTS="${JVM_OPTS}
-Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.local.only=false
@@ -91,8 +92,8 @@ if isTrue ${ENABLE_JMX}; then
-Dcom.sun.management.jmxremote.rmi.port=${JMX_PORT} -Dcom.sun.management.jmxremote.rmi.port=${JMX_PORT}
-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.host=${JMX_BINDING:-0.0.0.0} -Dcom.sun.management.jmxremote.host=${JMX_HOST}
-Djava.rmi.server.hostname=${JMX_HOST:-localhost}" -Djava.rmi.server.hostname=${JMX_HOST}"
log "JMX is enabled. Make sure you have port forwarding for ${JMX_PORT}" log "JMX is enabled. Make sure you have port forwarding for ${JMX_PORT}"
fi fi
@@ -169,7 +170,7 @@ function copyFilesForCurseForge() {
if ! which java > /dev/null; then if ! which java > /dev/null; then
log "Fixing PATH to include java" log "Fixing PATH to include java"
PATH="${PATH}:/opt/java/openjdk/bin" PATH="${PATH}:/usr/bin"
fi fi
mcServerRunnerArgs="--stop-duration ${STOP_DURATION:-60}s" mcServerRunnerArgs="--stop-duration ${STOP_DURATION:-60}s"