Compare commits

..

28 Commits

Author SHA1 Message Date
Geoff Bourne
9efe097193 Auto-merging via docker-versions-create 2020-11-25 15:55:53 -06:00
Geoff Bourne
df95c2e532 Mered .editorconfig 2020-11-25 15:55:23 -06:00
Geoff Bourne
07ab1abc6c Auto-merging via docker-versions-create 2020-08-09 13:06:45 -05:00
Geoff Bourne
cc483bb115 Auto-merging via docker-versions-create 2020-07-26 08:29:35 -05:00
Geoff Bourne
38fffbd39c Auto-merging via docker-versions-create 2020-07-18 18:40:02 -05:00
Geoff Bourne
a196739ed2 Auto-merging via docker-versions-create 2020-07-11 13:13:04 -05:00
Geoff Bourne
87939c3d14 Auto-merging via docker-versions-create 2020-07-10 17:11:06 -05:00
Geoff Bourne
13b2104e84 Auto-merging via docker-versions-create 2020-07-04 14:57:31 -05:00
Geoff Bourne
c6cf39948a Auto-merging via docker-versions-create 2020-06-20 15:44:28 -05:00
Geoff Bourne
3439020ed6 Auto-merging via docker-versions-create 2020-06-19 13:26:25 -05:00
Geoff Bourne
503bd86ab6 Auto-merging via docker-versions-create 2020-05-20 08:14:33 -05:00
Geoff Bourne
6bd25c20c3 Aligned with openj9 branch #521 2020-05-06 16:10:47 -05:00
Geoff Bourne
480b7645ba Auto-merging via docker-versions-create 2020-05-02 09:34:03 -05:00
Geoff Bourne
dd80e5ebd5 Auto-merging via docker-versions-create 2020-04-25 12:10:38 -05:00
Geoff Bourne
8164ac05c1 Auto-merging via docker-versions-create 2020-04-17 21:28:41 -05:00
Geoff Bourne
70c61aed5c Auto-merging via docker-versions-create 2020-04-11 08:51:41 -05:00
Geoff Bourne
3bde06fcfc Auto-merging via docker-versions-create 2020-04-10 11:08:47 -05:00
Geoff Bourne
f7eb33b41b Auto-merging via docker-versions-create 2020-04-03 13:31:35 -05:00
Geoff Bourne
1f7eafef87 Auto-merging via docker-versions-create 2020-04-03 13:28:47 -05:00
Geoff Bourne
0670114602 Auto-merging via docker-versions-create 2020-04-02 17:47:36 -05:00
Geoff Bourne
4feec8000b Auto-merging via docker-versions-create 2020-03-30 08:31:58 -05:00
Geoff Bourne
e6db79cbbb Auto-merging via docker-versions-create 2020-03-26 20:54:07 -05:00
Geoff Bourne
9d97a227f6 Auto-merging via docker-versions-create 2020-02-01 08:52:57 -06:00
Geoff Bourne
5d3393d66b Auto-merging via docker-versions-create 2020-01-17 08:29:08 -06:00
Geoff Bourne
99c1fc81f1 Auto-merging via docker-versions-create 2019-11-16 09:30:57 -06:00
Geoff Bourne
ee97808168 Auto-merging via docker-versions-create 2019-11-16 09:04:21 -06:00
Geoff Bourne
2673d1c921 Merge branch 'master' into openj9-nightly 2019-11-16 09:01:30 -06:00
Geoff Bourne
9b7d5b35e4 Base image on adoptopenjdk/openjdk8-openj9:alpine-nightly 2019-11-02 08:40:48 -05:00
10 changed files with 67 additions and 179 deletions

View File

@@ -1,62 +0,0 @@
name: Build and publish multiarch
on:
push:
branches:
- multiarch
- multiarch-latest
- "test-multiarch-.*"
tags:
- "[0-9]+.[0-9]+.[0-9]+-multiarch"
- "[0-9]+.[0-9]+.[0-9]+-multiarch-latest"
jobs:
docker-buildx:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2.2.0
- name: Prepare
id: prep
run: |
DOCKER_IMAGE=itzg/minecraft-server
VERSION=edge
if [[ $GITHUB_REF == refs/tags/* ]]; then
VERSION=${GITHUB_REF#refs/tags/}
fi
if [[ $GITHUB_REF == refs/heads/* ]]; then
VERSION=${GITHUB_REF#refs/heads/}
if [[ $VERSION == master ]]; then
VERSION=latest
fi
fi
TAGS="${DOCKER_IMAGE}:${VERSION}"
echo ::set-output name=tags::${TAGS}
echo ::set-output name=cache_from::${TAGS}
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile
platforms: linux/amd64,linux/arm/v7,linux/arm64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.prep.outputs.tags }}
cache-from: type=registry,ref=${{ steps.prep.outputs.cache_from }}
cache-to: type=inline
- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}

View File

@@ -1,11 +0,0 @@
Ensure buildx/BuildKit support is enabled and run:
```shell script
docker buildx build --platform=linux/arm64 --platform=linux/arm/v7 --platform=linux/amd64 --tag itzg/minecraft-server:multiarch --push .
```
To build for local testing, use:
```shell script
docker buildx build --platform=linux/amd64 --tag mc-multiarch --load .
```

View File

@@ -1,27 +1,32 @@
FROM ubuntu:18.04
FROM adoptopenjdk/openjdk8-openj9:alpine-nightly
LABEL org.opencontainers.image.authors="Geoff Bourne <itzgeoff@gmail.com>"
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive \
apt-get install -y \
openjdk-8-jre-headless \
imagemagick \
gosu \
curl wget \
jq \
dos2unix \
mysql-client \
tzdata \
rsync \
nano \
unzip \
knockd \
ttf-dejavu \
&& apt-get clean
# upgrade all packages since alpine jre8 base image tops out at 8u212
RUN apk -U --no-cache upgrade
RUN addgroup --gid 1000 minecraft \
&& adduser --system --shell /bin/false --uid 1000 --ingroup minecraft --home /data minecraft
RUN apk add --no-cache -U \
openssl \
imagemagick \
lsof \
su-exec \
shadow \
bash \
curl iputils wget \
git \
jq \
mysql-client \
tzdata \
rsync \
nano \
sudo \
knock \
ttf-dejavu
RUN addgroup -g 1000 minecraft \
&& adduser -Ss /bin/false -u 1000 -G minecraft -h /home/minecraft minecraft \
&& mkdir -m 777 /data \
&& chown minecraft:minecraft /data /home/minecraft
COPY files/sudoers* /etc/sudoers.d
@@ -29,9 +34,9 @@ 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 TARGETOS=linux
ARG TARGETARCH=amd64
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

View File

@@ -1076,6 +1076,14 @@ via a `JVM_XX_OPTS` environment variable.
For some cases, if e.g. after removing mods, it could be necessary to startup minecraft with an additional `-D` parameter like `-Dfml.queryResult=confirm`. To address this you can use the environment variable `JVM_DD_OPTS`, which builds the params from a given list of values separated by space, but without the `-D` prefix. To make things running under systems (e.g. Plesk), which doesn't allow `=` inside values, a `:` (colon) could be used instead. The upper example would look like this:
`JVM_DD_OPTS=fml.queryResult:confirm`, and will be converted to `-Dfml.queryResult=confirm`.
The container uses [OpenJ9](https://www.eclipse.org/openj9/docs) and a couple of J9 options are
simplified by environment variables:
- `-e TUNE_VIRTUALIZED=TRUE` : enables the option to
[optimize for virtualized environments](https://www.eclipse.org/openj9/docs/xtunevirtualized/)
- `-e TUNE_NURSERY_SIZES=TRUE` : configures nursery sizes where the initial size is 50%
of the `MAX_MEMORY` and the max size is 80%.
### Enable Remote JMX for Profiling
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:

View File

2
start
View File

@@ -40,7 +40,7 @@ if [ $(id -u) = 0 ]; then
echo 'hosts: files dns' > /etc/nsswitch.conf
fi
exec gosu ${runAsUser}:${runAsGroup} ${SCRIPTS:-/}start-configuration $@
exec su-exec ${runAsUser}:${runAsGroup} ${SCRIPTS:-/}start-configuration $@
else
exec ${SCRIPTS:-/}start-configuration $@
fi

View File

@@ -7,8 +7,6 @@ shopt -s nullglob
#umask 002
export HOME=/data
log "Running as uid=$(id -u) gid=$(id -g) with /data as '$(ls -lnd /data)'"
if [ ! -e /data/eula.txt ]; then
if ! isTrue "$EULA"; then
log ""
@@ -24,6 +22,15 @@ if [ ! -e /data/eula.txt ]; then
fi
log "Running as uid=$(id -u) gid=$(id -g) with /data as '$(ls -lnd /data)'"
if ! touch /data/.verify_access; then
log "ERROR: /data doesn't seem to be writable. Please make sure attached directory is writable by uid=$(id -u)"
exit 2
fi
rm /data/.verify_access || true
if [[ $PROXY ]]; then
export http_proxy="$PROXY"
export https_proxy="$PROXY"
@@ -95,11 +102,7 @@ case "${TYPE^^}" in
exec ${SCRIPTS:-/}start-deployFabric "$@"
;;
FTBA)
exec ${SCRIPTS:-/}start-deployFTBA "$@"
;;
CURSEFORGE|FTB)
FTB|CURSEFORGE)
exec ${SCRIPTS:-/}start-deployCF "$@"
;;

View File

@@ -7,7 +7,7 @@ isDebugging && set -x
export FTB_BASE_DIR=/data/FeedTheBeast
legacyJavaFixerUrl=https://ftb.forgecdn.net/FTB2/maven/net/minecraftforge/lex/legacyjavafixer/1.0/legacyjavafixer-1.0.jar
export TYPE=CURSEFORGE
export TYPE=FEED-THE-BEAST
FTB_SERVER_MOD=${FTB_SERVER_MOD:-$CF_SERVER_MOD}

View File

@@ -1,72 +0,0 @@
#!/bin/bash
ftbInstallMarker=".ftb-installed"
. ${SCRIPTS:-/}start-utils
isDebugging && set -x
set -e
if ! [[ -v FTB_MODPACK_ID ]]; then
log "ERROR FTB_MODPACK_ID is required with TYPE=FTB"
exit 1
fi
if ! [[ ${FTB_MODPACK_ID} =~ [0-9]+ ]]; then
log "ERROR FTB_MODPACK_ID needs to be numeric"
exit 1
fi
if ! [[ -v FTB_MODPACK_VERSION_ID ]]; then
if ! FTB_MODPACK_VERSION_ID=$(curl -fsSL https://api.modpacks.ch/public/modpack/${FTB_MODPACK_ID} | jq -r '.versions | sort_by(.updated)[-1].id'); then
log "ERROR unable to resolve latest modpack version ID for modpack ${FTB_MODPACK_ID}"
exit 1
fi
elif ! [[ ${FTB_MODPACK_VERSION_ID} =~ [0-9]+ ]]; then
log "ERROR FTB_MODPACK_VERSION_ID needs to be numeric"
exit 1
fi
if ! [ -f "${ftbInstallMarker}" ] || [ $(cat "${ftbInstallMarker}") != "${FTB_MODPACK_ID}=${FTB_MODPACK_VERSION_ID}" ]; then
ftbInstaller=/data/ftb-installer
if ! [[ -f "${ftbInstaller}" ]]; then
log "Downloading FTB installer"
curl -fsSL https://api.modpacks.ch/public/modpack/1/1/server/linux -o "${ftbInstaller}"
chmod +x "${ftbInstaller}"
fi
rm -rf forge*jar mods config libraries defaultconfigs changelogs
log "Installing modpack ID ${FTB_MODPACK_ID}, version ID ${FTB_MODPACK_VERSION_ID}"
${ftbInstaller} ${FTB_MODPACK_ID} ${FTB_MODPACK_VERSION_ID} --noscript --auto
rm -f forge*installer.jar
echo "${FTB_MODPACK_ID}=${FTB_MODPACK_VERSION_ID}" > ${ftbInstallMarker}
writeEula
else
log "FTB modpack ID ${FTB_MODPACK_ID}, version ID ${FTB_MODPACK_VERSION_ID} is ready to go"
fi
isDebugging && cat version.json
forgeVersion=$(jq -r '.targets[] | select(.name == "forge") | .version' version.json)
mcVersion=$(jq -r '.targets[] | select(.name == "minecraft") | .version' version.json)
variants=(
forge-${mcVersion}-${forgeVersion}.jar
forge-${mcVersion}-${forgeVersion}-universal.jar
forge-${mcVersion}-${forgeVersion}-${mcVersion}-universal.jar
)
for f in ${variants[@]}; do
if [ -f $f ]; then
export SERVER=$f
break
fi
done
if ! [ -v SERVER ]; then
log "ERROR unable to locate the installed forge server jar"
ls *.jar
exit 2
fi
# Continue to Final Setup
exec ${SCRIPTS:-/}start-finalSetupWorld $@

View File

@@ -91,6 +91,23 @@ if [ -n "$JVM_DD_OPTS" ]; then
done
fi
if isTrue ${TUNE_VIRTUALIZED}; then
JVM_XX_OPTS="${JVM_XX_OPTS} -Xtune:virtualized"
fi
if isTrue ${TUNE_NURSERY_SIZES}; then
case ${MAX_MEMORY^^} in
*G)
MAX_MEMORY_MB=$(( ${MAX_MEMORY%?} * 1024 )) ;;
*M)
MAX_MEMORY_MB=${MAX_MEMORY%?} ;;
esac
NURSERY_MINIMUM=$(( ${MAX_MEMORY_MB} / 2 ))
NURSERY_MAXIMUM=$(( ${MAX_MEMORY_MB} * 4/5 ))
JVM_XX_OPTS="${JVM_XX_OPTS} -Xmns${NURSERY_MINIMUM}M -Xmnx${NURSERY_MAXIMUM}M"
fi
if isTrue ${ENABLE_JMX}; then
: ${JMX_HOST:=0.0.0.0}
: ${JMX_PORT:=7091}
@@ -184,7 +201,7 @@ if [[ ${TYPE} == "CURSE_INSTANCE" ]]; then
exec mc-server-runner ${mcServerRunnerArgs} \
--cf-instance-file "${CURSE_INSTANCE_JSON}" \
java $JVM_XX_OPTS $JVM_OPTS $expandedDOpts -jar _SERVERJAR_ "$@" $EXTRA_ARGS
elif [[ ${TYPE} == "CURSEFORGE" && "${SERVER}" ]]; then
elif [[ ${TYPE} == "FEED-THE-BEAST" && "${SERVER}" ]]; then
copyFilesForCurseForge
cd "${FTB_DIR}"
@@ -193,7 +210,7 @@ elif [[ ${TYPE} == "CURSEFORGE" && "${SERVER}" ]]; then
set -x
fi
exec mc-server-runner ${bootstrapArgs} ${mcServerRunnerArgs} java $JVM_XX_OPTS $JVM_OPTS $expandedDOpts -jar $(basename "${SERVER}") "$@" $EXTRA_ARGS
elif [[ ${TYPE} == "CURSEFORGE" ]]; then
elif [[ ${TYPE} == "FEED-THE-BEAST" ]]; then
mcServerRunnerArgs="${mcServerRunnerArgs} --shell bash"
copyFilesForCurseForge