Compare commits

..

35 Commits

Author SHA1 Message Date
Geoff Bourne
9c73bd11b7 Auto-merging via docker-versions-create 2021-01-29 21:04:39 -06:00
Geoff Bourne
9e2b184f2a Auto-merging via docker-versions-create 2021-01-12 17:26:27 -06:00
Geoff Bourne
1f0c0f5e17 Auto-merging via docker-versions-create 2021-01-09 11:21:12 -06:00
Geoff Bourne
9c626dcc8a Auto-merging via docker-versions-create 2021-01-06 22:03:16 -06:00
Geoff Bourne
c40b658308 Auto-merging via docker-versions-create 2020-12-27 22:05:44 -06:00
Geoff Bourne
6c52ae8ddf Auto-merging via docker-versions-create 2020-12-19 08:24:22 -06:00
Geoff Bourne
d07143153f Auto-merging via docker-versions-create 2020-12-15 13:59:53 -06:00
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
7 changed files with 60 additions and 122 deletions

View File

@@ -1,80 +0,0 @@
name: Build and publish multiarch
on:
push:
branches:
- multiarch
- java8-multiarch
- multiarch-latest
- java15
- test/multiarch/*
tags:
- "[0-9]+.[0-9]+.[0-9]+-multiarch"
- "[0-9]+.[0-9]+.[0-9]+-multiarch-latest"
- "[0-9]+.[0-9]+.[0-9]+-java15"
jobs:
docker-buildx:
runs-on: ubuntu-20.04
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}
echo ::set-output name=version::${VERSION//\//-}
echo ::set-output name=cache_version::${VERSION//\//-}
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Cache Docker layers
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ steps.prep.outputs.cache_version }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-${{ steps.prep.outputs.cache_version }}-
- 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=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache
labels: |
org.opencontainers.image.documentation=https://github.com/itzg/docker-minecraft-server
org.opencontainers.image.source=https://github.com/itzg/docker-minecraft-server
org.opencontainers.image.version=${{ steps.prep.outputs.version }}
org.opencontainers.image.revision=${{ github.sha }}
- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}

View File

@@ -4,18 +4,23 @@ on:
push: push:
branches: branches:
- master - master
- java8
- openj9 - openj9
- openj9-11 - openj9-11
- openj9-nightly
- adopt11 - adopt11
- adopt13
- adopt14
- adopt15
- test/* - test/*
tags: tags:
- "[0-9]+.[0-9]+.[0-9]+" - "[0-9]+.[0-9]+.[0-9]+"
- "[0-9]+.[0-9]+.[0-9]+-java8"
- "[0-9]+.[0-9]+.[0-9]+-openj9" - "[0-9]+.[0-9]+.[0-9]+-openj9"
- "[0-9]+.[0-9]+.[0-9]+-openj9-11" - "[0-9]+.[0-9]+.[0-9]+-openj9-11"
- "[0-9]+.[0-9]+.[0-9]+-openj9-nightly" - "[0-9]+.[0-9]+.[0-9]+-openj9-nightly"
- "[0-9]+.[0-9]+.[0-9]+-adopt11" - "[0-9]+.[0-9]+.[0-9]+-adopt11"
- "[0-9]+.[0-9]+.[0-9]+-adopt13"
- "[0-9]+.[0-9]+.[0-9]+-adopt14"
- "[0-9]+.[0-9]+.[0-9]+-adopt15"
jobs: jobs:
test: test:

View File

@@ -1,4 +1,4 @@
FROM adoptopenjdk/openjdk11:alpine-jre FROM adoptopenjdk/openjdk8-openj9:alpine-nightly
LABEL org.opencontainers.image.authors="Geoff Bourne <itzgeoff@gmail.com>" LABEL org.opencontainers.image.authors="Geoff Bourne <itzgeoff@gmail.com>"
@@ -70,7 +70,7 @@ COPY log4j2.xml /tmp/log4j2.xml
WORKDIR /data WORKDIR /data
ENV UID=1000 GID=1000 \ ENV UID=1000 GID=1000 \
JVM_XX_OPTS="-XX:+UseG1GC" MEMORY="1G" \ MEMORY="1G" \
TYPE=VANILLA VERSION=LATEST FORGEVERSION=RECOMMENDED SPONGEBRANCH=STABLE SPONGEVERSION= FABRICVERSION=LATEST LEVEL=world \ TYPE=VANILLA VERSION=LATEST FORGEVERSION=RECOMMENDED SPONGEBRANCH=STABLE SPONGEVERSION= FABRICVERSION=LATEST LEVEL=world \
PVP=true DIFFICULTY=easy ENABLE_RCON=true RCON_PORT=25575 RCON_PASSWORD=minecraft \ PVP=true DIFFICULTY=easy ENABLE_RCON=true RCON_PORT=25575 RCON_PASSWORD=minecraft \
LEVEL_TYPE=DEFAULT SERVER_PORT=25565 ONLINE_MODE=TRUE SERVER_NAME="Dedicated Server" \ LEVEL_TYPE=DEFAULT SERVER_PORT=25565 ONLINE_MODE=TRUE SERVER_NAME="Dedicated Server" \

View File

@@ -160,31 +160,24 @@ the server jar remain in the `/data` directory. It is safe to remove those._
To use a different version of Java, please use a docker tag to run your Minecraft server. To use a different version of Java, please use a docker tag to run your Minecraft server.
| Tag name | Java version | Linux | JVM Type | Architecture | | Tag name | Description | Linux |
| -------------- | -------------|--------|----------|-------------------| | -------------- | ------------------------------------------- | ------------ |
| latest | 11 | Alpine | Hotspot | amd64 | | latest | **Default**. Uses Java version 8 | Alpine Linux |
| java8 | 8 | Alpine | Hotspot | amd64 | | adopt15 | Uses Java version 15 from AdoptOpenJDK | Alpine Linux |
| java8-multiarch | 8 | Debian | Hotspot | amd64,arm64,armv7 | | adopt14 | Uses Java version 14 from AdoptOpenJDK | Alpine Linux |
| java15 | 15 | Debian | Hotspot | amd64,arm64,armv7 | | adopt13 | Uses Java version 13 from AdoptOpenJDK | Alpine Linux |
| adopt11 | 11 | Alpine | Hotspot | amd64 | | adopt11 | Uses Java version 11 from AdoptOpenJDK | Alpine Linux |
| openj9 | 8 | Alpine | OpenJ9 | amd64 | | openj9 | Uses Eclipse OpenJ9 JVM | Alpine Linux |
| openj9-11 | 11 | Alpine | OpenJ9 | amd64 | | openj9-11 | Uses Eclipse OpenJ9 JVM for Java 11 | Alpine Linux |
| multiarch | 11 | Debian | Hotspot | amd64,arm64,armv7 | | openj9-nightly | Uses Eclipse OpenJ9 JVM testing builds | Alpine Linux |
| multiarch-latest | 15+ | Debian | Hotspot | amd64,arm64,armv7 | | multiarch | Uses Java version 8 latest update | Debian Linux |
| multiarch-latest | Uses Java version 15 latest update | Debian Linux |
For example, to use Java version 15 on any supported architecture: For example, to use a Java version 13:
docker run --name mc itzg/minecraft-server:java15 docker run --name mc itzg/minecraft-server:adopt13
> Keep in mind that some versions of Minecraft server can't work on the newest versions of Java. Also, FORGE doesn't support openj9 JVM implementation. Keep in mind that some versions of Minecraft server can't work on the newest versions of Java. Also, FORGE doesn't support openj9 JVM implementation.
### Deprecated Image Tags
The following image tags have been deprecated and are no longer receiving updates:
- adopt13
- adopt14
- adopt15
- openj9-nightly
## Healthcheck ## Healthcheck
@@ -515,7 +508,7 @@ A [Catserver](http://catserver.moe/) type server can be used with
## Running a server with a Feed the Beast modpack ## Running a server with a Feed the Beast modpack
> **NOTE** requires one of the Debian based images listed in [the Java versions section](#running-minecraft-server-on-different-java-version). > **NOTE** requires `itzg/minecraft-server:multiarch` image
[Feed the Beast application](https://www.feed-the-beast.com/) modpacks are supported by using `-e TYPE=FTBA` (**note** the "A" at the end of the type). This server type will automatically take care of downloading and installing the modpack and appropriate version of Forge, so the `VERSION` does not need to be specified. [Feed the Beast application](https://www.feed-the-beast.com/) modpacks are supported by using `-e TYPE=FTBA` (**note** the "A" at the end of the type). This server type will automatically take care of downloading and installing the modpack and appropriate version of Forge, so the `VERSION` does not need to be specified.
@@ -965,7 +958,7 @@ environment variable set to `false`, such as
### Level Type and Generator Settings ### Level Type and Generator Settings
By default, a standard world is generated with hills, valleys, water, etc. A different level type can By default, a standard world is generated with hills, valleys, water, etc. A different level type can
be configured by setting `LEVEL_TYPE` to an expected type, for example be configured by setting `LEVEL_TYPE` to an expected type, such as
- DEFAULT - DEFAULT
- FLAT - FLAT
@@ -973,8 +966,6 @@ be configured by setting `LEVEL_TYPE` to an expected type, for example
- AMPLIFIED - AMPLIFIED
- CUSTOMIZED - CUSTOMIZED
- BUFFET - BUFFET
- BIOMESOP (Biomes O' Plenty for 1.12 and older)
- BIOMESOPLENTY (Biomes O' Plenty for 1.15 and above)
Descriptions are available at the [gamepedia](http://minecraft.gamepedia.com/Server.properties). Descriptions are available at the [gamepedia](http://minecraft.gamepedia.com/Server.properties).
@@ -1105,18 +1096,19 @@ is passed to `docker run`.
### Memory Limit ### Memory Limit
By default, the image declares an initial and maximum Java memory-heap limit of 1 GB. There are several ways to adjust the memory settings: By default, the image declares a Java initial and maximum memory limit of 1 GB. There are several
ways to adjust the memory settings:
- `MEMORY`: "1G" by default, can be used to adjust both initial (`Xms`) and max (`Xmx`) memory heap settings of the JVM - `MEMORY`, "1G" by default, can be used to adjust both initial (`Xms`) and max (`Xmx`)
- `INIT_MEMORY`: independently sets the initial heap size memory settings of the JVM
- `MAX_MEMORY`: independently sets the max heap size - `INIT_MEMORY`, independently sets the initial heap size
- `MAX_MEMORY`, independently sets the max heap size
The values of all three are passed directly to the JVM and support format/units as `<size>[g|G|m|M|k|K]`. For example: The values of all three are passed directly to the JVM and support format/units as
`<size>[g|G|m|M|k|K]`. For example:
-e MEMORY=2G -e MEMORY=2G
> NOTE: the settings above only set the Java **heap** limits. Memory resource requests and limits on the overall container should also account for non-heap memory usage. An extra 25% is [a general best practice](https://dzone.com/articles/best-practices-java-memory-arguments-for-container).
### JVM Options ### JVM Options
General JVM options can be passed to the Minecraft Server invocation by passing a `JVM_OPTS` General JVM options can be passed to the Minecraft Server invocation by passing a `JVM_OPTS`
@@ -1126,6 +1118,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: 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`. `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 ### 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: 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

@@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
#set -x #set -x
# Use this variable to indicate a list of branches that docker hub is watching # Use this variable to indicate a list of branches that docker hub is watching
branches_list=('java8' 'java8-multiarch' 'openj9' 'openj9-11' 'adopt11' 'java15' 'multiarch' 'multiarch-latest') branches_list=('openj9' 'openj9-11' 'openj9-nightly' 'adopt11' 'adopt13' 'adopt14' 'adopt15' 'multiarch' 'multiarch-latest')
function TrapExit { function TrapExit {
echo "Checking out back in master" echo "Checking out back in master"

View File

@@ -95,10 +95,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 "$@"
;; ;;

View File

@@ -83,6 +83,23 @@ if [ -n "$JVM_DD_OPTS" ]; then
done done
fi 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 if isTrue ${ENABLE_JMX}; then
: ${JMX_HOST:=0.0.0.0} : ${JMX_HOST:=0.0.0.0}
: ${JMX_PORT:=7091} : ${JMX_PORT:=7091}