Compare commits

..

37 Commits

Author SHA1 Message Date
Pacsui
8745b36b89 fix deadlink for autostop example (#4022) 2026-04-16 14:20:24 -05:00
renovate[bot]
97407c672f Update dependency itzg/mc-image-helper to v1.56.3 (#4015)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-16 13:41:48 -05:00
dependabot[bot]
e25de5dc05 build(deps): bump packaging from 26.0 to 26.1 in /docs in the patches group (#4021) 2026-04-15 07:08:45 -05:00
dependabot[bot]
59a2126192 build(deps): bump the updates group with 3 updates (#4019) 2026-04-14 07:36:43 -05:00
dependabot[bot]
5e2e26831e build(deps): bump zensical from 0.0.32 to 0.0.33 in /docs in the patches group (#4020) 2026-04-14 07:36:08 -05:00
dependabot[bot]
18d57981f5 build(deps): bump docker/login-action from 3.7.0 to 4.0.0 (#3965) 2026-04-14 06:50:48 -05:00
at://matrixfurry.com
a5cd3a57fa Remove EMI from Modrinth exclusions (#4018) 2026-04-13 19:53:32 -05:00
AegisBlue
c692e99523 Include Server.pro sponsorship in README (#4017) 2026-04-13 11:27:20 -05:00
dependabot[bot]
5f9bc3a414 build(deps): bump the patches group in /docs with 2 updates (#4016) 2026-04-13 06:57:25 -05:00
Geoff Bourne
df7f067782 neoforge: support year-based versions (#4014) 2026-04-12 14:02:37 -05:00
SpawnBox-dev
7b1cb53cda docs: simplify sponsor layout - drop table, use floated logo (#4012) 2026-04-11 21:15:00 -05:00
Geoff Bourne
dcfedaa10f Put sponsor entries in table (#4011) 2026-04-11 20:35:15 -05:00
Geoff Bourne
a9a27df4a6 Corrected sponsors anchor (#4010) 2026-04-11 20:15:20 -05:00
Geoff Bourne
a2fbd4ce9a Add sponsors section to README (#4009)
Co-authored-by: SpawnBox-dev <github@spawnbox.app>
Co-authored-by: SpawnBox-dev <developer@spawnbox.app>
2026-04-11 20:02:38 -05:00
renovate[bot]
eb4fe3c7bf Update dependency itzg/mc-image-helper to v1.56.1 (#4005) 2026-04-09 21:48:28 -05:00
Geoff Bourne
8c9e2c653f Added dev docs for building image with tool version change (#4007) 2026-04-09 11:02:32 -05:00
Vianney Veremme
bd98fe57ba Add optional Modrinth projects support (? suffix) documentation (#4004) 2026-04-09 10:15:11 -05:00
dependabot[bot]
23205471db build(deps): bump the patches group in /docs with 2 updates (#4001) 2026-04-06 07:49:39 -05:00
EmilyxFox
f8618a5360 add more examples for new minecraft version schema (#3981) 2026-04-05 11:25:32 -05:00
renovate[bot]
acc90757a6 chore(deps): update dependency itzg/mc-server-runner to v1.14.5 (#3999)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-05 10:07:11 -05:00
Geoff Bourne
589872049f Added default exclude of smooth swapping (#3992) 2026-03-31 11:38:50 -05:00
dependabot[bot]
18403e7db8 build(deps): bump the patches group across 1 directory with 4 updates (#3996) 2026-03-30 13:37:28 -05:00
renovate[bot]
2625ca2b3c chore(deps): update dependency itzg/mc-server-runner to v1.14.4 (#3993)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-28 13:24:01 -05:00
Geoff Bourne
5b9c09b7b2 Pin mcVersion to 1.21.11 for Java 21 build testing (#3991) 2026-03-26 15:54:10 -05:00
Jason Walton
b37c2cc3ef Add RCON_PASSWORD_FILE to variables.md. (#3989) 2026-03-26 15:42:22 -05:00
Geoff Bourne
3cd3656868 Consider MODRINTH_PROJECTS_DEFAULT_VERSION_TYPE as part of VERSION_FROM_MODRINTH_PROJECTS (#3985) 2026-03-22 19:52:07 -05:00
renovate[bot]
387c674849 chore(deps): update dependency itzg/mc-image-helper to v1.55.3 (#3984)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-22 08:45:41 -05:00
Geoff Bourne
fba656561f Add image variant java25-alpine (#3980) 2026-03-17 21:06:00 -05:00
Geoff Bourne
cf8ab31e25 Apply logging prefix on output from DEBUG_MEMORY (#3975) 2026-03-17 08:04:46 -05:00
dependabot[bot]
68bb650617 build(deps): bump the patches group in /docs with 2 updates (#3976) 2026-03-16 07:30:31 -05:00
renovate[bot]
c5a298fa05 chore(deps): update dependency itzg/rcon-cli to v1.7.4 (#3973) 2026-03-13 07:30:23 -05:00
Geoff Bourne
5dff0b8541 notes: removed start-setupForgeApiMods from start flow diagram (#3972) 2026-03-12 16:08:06 -05:00
renovate[bot]
9c9a3a8b43 chore(deps): update dependency itzg/mc-server-runner to v1.14.3 (#3971) 2026-03-10 22:23:09 -05:00
dependabot[bot]
3bbe3b7c80 build(deps): bump platformdirs from 4.9.2 to 4.9.4 in /docs in the patches group (#3970) 2026-03-09 07:31:56 -05:00
EmilyxFox
ddb3dbf776 add dockerfile_inline example to misc/building (#3963) 2026-03-07 18:40:17 -06:00
Geoff Bourne
1cf70665bb build: adjust RTD config to explicitly use docs/requirements.txt (#3964) 2026-03-07 14:08:54 -06:00
Geoff Bourne
a543ee7ebc Added NUMA library (#3962) 2026-03-07 08:54:18 -06:00
28 changed files with 282 additions and 55 deletions

View File

@@ -16,6 +16,9 @@ updates:
schedule: schedule:
interval: weekly interval: weekly
groups: groups:
docker:
patterns:
- "docker/*"
patches: patches:
patterns: patterns:
- "*" - "*"

View File

@@ -27,6 +27,7 @@ jobs:
# NOTE: the "latest" variant is identified in the Docker meta step's 'latest' config # NOTE: the "latest" variant is identified in the Docker meta step's 'latest' config
variant: variant:
- java25 - java25
- java25-alpine
- java25-jdk - java25-jdk
- java21 - java21
- java21-alpine - java21-alpine
@@ -42,6 +43,10 @@ jobs:
baseImage: eclipse-temurin:25-jre baseImage: eclipse-temurin:25-jre
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
mcVersion: latest mcVersion: latest
- variant: java25-alpine
baseImage: eclipse-temurin:25-jre-alpine
platforms: linux/amd64,linux/arm64
mcVersion: latest
- variant: java25-jdk - variant: java25-jdk
baseImage: eclipse-temurin:25 baseImage: eclipse-temurin:25
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
@@ -50,15 +55,15 @@ jobs:
- variant: java21 - variant: java21
baseImage: eclipse-temurin:21-jre baseImage: eclipse-temurin:21-jre
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
mcVersion: latest mcVersion: 1.21.11
- variant: java21-jdk - variant: java21-jdk
baseImage: eclipse-temurin:21 baseImage: eclipse-temurin:21
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
mcVersion: latest mcVersion: 1.21.11
- variant: java21-alpine - variant: java21-alpine
baseImage: eclipse-temurin:21-jre-alpine baseImage: eclipse-temurin:21-jre-alpine
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
mcVersion: latest mcVersion: 1.21.11
# JAVA 17: # JAVA 17:
- variant: java17 - variant: java17
# jammy doesn't work until minecraft updates to https://github.com/netty/netty/issues/12343 # jammy doesn't work until minecraft updates to https://github.com/netty/netty/issues/12343
@@ -102,7 +107,7 @@ jobs:
- name: Docker meta - name: Docker meta
id: meta id: meta
uses: docker/metadata-action@v5.10.0 uses: docker/metadata-action@v6.0.0
with: with:
# NOTE for forks: if your Docker Hub organization doesn't match your Github repo's, # NOTE for forks: if your Docker Hub organization doesn't match your Github repo's,
# then the use of ${{ github.repository_owner }} will need to be replaced. # then the use of ${{ github.repository_owner }} will need to be replaced.
@@ -132,13 +137,13 @@ jobs:
org.opencontainers.image.authors=Geoff Bourne <itzgeoff@gmail.com> org.opencontainers.image.authors=Geoff Bourne <itzgeoff@gmail.com>
- name: Setup Docker Buildx - name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3.12.0 uses: docker/setup-buildx-action@v4.0.0
- name: Set up QEMU - name: Set up QEMU
uses: docker/setup-qemu-action@v3.7.0 uses: docker/setup-qemu-action@v4.0.0
- name: Build for test - name: Build for test
uses: docker/build-push-action@v6.19.2 uses: docker/build-push-action@v7.1.0
with: with:
platforms: linux/amd64 platforms: linux/amd64
tags: ${{ env.IMAGE_TO_TEST }} tags: ${{ env.IMAGE_TO_TEST }}
@@ -163,14 +168,14 @@ jobs:
tests/test.sh tests/test.sh
- name: Login to DockerHub - name: Login to DockerHub
uses: docker/login-action@v3.7.0 uses: docker/login-action@v4.1.0
if: env.HAS_IMAGE_REPO_ACCESS if: env.HAS_IMAGE_REPO_ACCESS
with: with:
username: ${{ secrets.DOCKER_USER }} username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASSWORD }} password: ${{ secrets.DOCKER_PASSWORD }}
- name: Login to GHCR - name: Login to GHCR
uses: docker/login-action@v3.7.0 uses: docker/login-action@v4.1.0
if: env.HAS_IMAGE_REPO_ACCESS if: env.HAS_IMAGE_REPO_ACCESS
with: with:
registry: ghcr.io registry: ghcr.io
@@ -178,7 +183,7 @@ jobs:
password: ${{ github.token }} password: ${{ github.token }}
- name: Build and push - name: Build and push
uses: docker/build-push-action@v6.19.2 uses: docker/build-push-action@v7.1.0
if: github.actor == github.repository_owner if: github.actor == github.repository_owner
with: with:
platforms: ${{ matrix.platforms }} platforms: ${{ matrix.platforms }}

View File

@@ -19,7 +19,7 @@ jobs:
steps: steps:
- name: on-publish - name: on-publish
if: github.event_name == 'release' && github.event.action == 'published' if: github.event_name == 'release' && github.event.action == 'published'
uses: SethCohen/github-releases-to-discord@v1.19.0 uses: SethCohen/github-releases-to-discord@v1.20.0
with: with:
webhook_url: ${{ secrets.DISCORD_WEBHOOK }} webhook_url: ${{ secrets.DISCORD_WEBHOOK }}
- name: on-success - name: on-success

View File

@@ -23,7 +23,7 @@ jobs:
matrix: matrix:
variant: variant:
- java25 - java25
- java21-alpine - java25-alpine
- java17 - java17
- java8 - java8
include: include:
@@ -32,8 +32,8 @@ jobs:
baseImage: eclipse-temurin:25-jre baseImage: eclipse-temurin:25-jre
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
mcVersion: latest mcVersion: latest
- variant: java21-alpine - variant: java25-alpine
baseImage: eclipse-temurin:21-jre-alpine baseImage: eclipse-temurin:25-jre-alpine
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
mcVersion: latest mcVersion: latest
# JAVA 17: # JAVA 17:
@@ -59,10 +59,10 @@ jobs:
fetch-depth: 0 fetch-depth: 0
- name: Setup Docker Buildx - name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3.12.0 uses: docker/setup-buildx-action@v4.0.0
- name: Confirm multi-arch build - name: Confirm multi-arch build
uses: docker/build-push-action@v6.19.2 uses: docker/build-push-action@v7.1.0
with: with:
platforms: ${{ matrix.platforms }} platforms: ${{ matrix.platforms }}
# ensure latest base image is used # ensure latest base image is used
@@ -73,7 +73,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.19.2 uses: docker/build-push-action@v7.1.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"

View File

@@ -1,19 +1,15 @@
version: 2 version: 2
python:
install:
- requirements: docs/requirements.txt
build: build:
os: ubuntu-24.04 os: ubuntu-24.04
tools: tools:
python: latest python: "3.14"
jobs: jobs:
# We recommend using a requirements file for reproducible builds. # We recommend using a requirements file for reproducible builds.
# This is just a quick example to get started. # This is just a quick example to get started.
# https://docs.readthedocs.io/page/guides/reproducible-builds.html # https://docs.readthedocs.io/page/guides/reproducible-builds.html
install: install:
- pip install zensical - pip install -r docs/requirements.txt
build: build:
html: html:
- zensical build - zensical build

View File

@@ -37,7 +37,7 @@ RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
--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
# renovate: datasource=github-releases packageName=itzg/rcon-cli # renovate: datasource=github-releases packageName=itzg/rcon-cli
ARG RCON_CLI_VERSION=1.7.3 ARG RCON_CLI_VERSION=1.7.4
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \ 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
@@ -49,13 +49,13 @@ RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
--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
# renovate: datasource=github-releases packageName=itzg/mc-server-runner # renovate: datasource=github-releases packageName=itzg/mc-server-runner
ARG MC_SERVER_RUNNER_VERSION=1.14.2 ARG MC_SERVER_RUNNER_VERSION=1.14.5
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \ 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
# renovate: datasource=github-releases packageName=itzg/mc-image-helper versioning=loose # renovate: datasource=github-releases packageName=itzg/mc-image-helper versioning=loose
ARG MC_HELPER_VERSION=1.55.2 ARG MC_HELPER_VERSION=1.56.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

View File

@@ -6,7 +6,7 @@
[![](https://img.shields.io/badge/Donate-Buy%20me%20a%20coffee-orange.svg)](https://www.buymeacoffee.com/itzg) [![](https://img.shields.io/badge/Donate-Buy%20me%20a%20coffee-orange.svg)](https://www.buymeacoffee.com/itzg)
[![Documentation Status](https://readthedocs.org/projects/docker-minecraft-server/badge/?version=latest)](https://docker-minecraft-server.readthedocs.io/en/latest/?badge=latest) [![Documentation Status](https://readthedocs.org/projects/docker-minecraft-server/badge/?version=latest)](https://docker-minecraft-server.readthedocs.io/en/latest/?badge=latest)
[![Read the docs](docs/img/docs-banner.png)](https://docker-minecraft-server.readthedocs.io/) [![Read the docs](docs/img/banner-docs.png)](https://docker-minecraft-server.readthedocs.io/)
There you will find things like There you will find things like
- [Quick start with Docker Compose](https://docker-minecraft-server.readthedocs.io/en/latest/#using-docker-compose) - [Quick start with Docker Compose](https://docker-minecraft-server.readthedocs.io/en/latest/#using-docker-compose)
@@ -19,3 +19,26 @@ There you will find things like
There are also many examples located in [the examples directory](examples) of this repo. There are also many examples located in [the examples directory](examples) of this repo.
This image only supports Java edition natively; however, if looking for a server that is compatible with Bedrock edition, then use [itzg/minecraft-bedrock-server](https://github.com/itzg/docker-minecraft-bedrock-server) or [refer to this section](https://docker-minecraft-server.readthedocs.io/en/latest/misc/examples/#bedrock-compatible-server) to add Bedrock compatibility to a Java edition server. This image only supports Java edition natively; however, if looking for a server that is compatible with Bedrock edition, then use [itzg/minecraft-bedrock-server](https://github.com/itzg/docker-minecraft-bedrock-server) or [refer to this section](https://docker-minecraft-server.readthedocs.io/en/latest/misc/examples/#bedrock-compatible-server) to add Bedrock compatibility to a Java edition server.
[![Sponsors](docs/img/banner-sponsors.png)](#sponsors)
<a name="sponsors"></a>
<a href="https://spawnbox.app"><img src="https://spawnbox.app/favicon-48x48.png" alt="SpawnBox logo" width="48" align="left" /></a>
<a href="https://spawnbox.app"><b>SpawnBox</b></a> - Powered by <code>itzg/minecraft-server</code>, it's a Windows desktop app for parents, teens, and friend groups who want a Minecraft server on their own PC without learning Docker, WSL2, or networking.
<br clear="left" />
<a href="https://server.pro"><img src="https://server.pro/s/img/logo-short-192.png" alt="Server.pro logo" width="48" align="left" /></a>
<a href="https://server.pro"><b>Server.pro</b></a> - A game server hosting platform offering one-click Minecraft server deployment powered by <code>itzg/minecraft-server</code>, with global locations and an easy-to-use control panel.
<br clear="left" />
<!-- additional sponsors repeat the pattern above: floated logo + blurb + clear-left break -->
<!-- logo image preferrably hosted on an external, stable site at a size of 48x48px -->
<!-- link to sponsor site -->
<!-- one or two line summary ideally with a mention of image integration -->
[and more...](https://github.com/sponsors/itzg)

View File

@@ -31,6 +31,7 @@ apk add --no-cache -U \
libpcap \ libpcap \
libwebp \ libwebp \
libcap \ libcap \
numactl \
${EXTRA_ALPINE_PACKAGES} ${EXTRA_ALPINE_PACKAGES}
# Download and install patched knockd # Download and install patched knockd

View File

@@ -27,6 +27,7 @@ apt-get install -y \
lbzip2 \ lbzip2 \
nfs-common \ nfs-common \
libpcap0.8 \ libpcap0.8 \
libnuma1 \
${EXTRA_DEB_PACKAGES} ${EXTRA_DEB_PACKAGES}
# Install Git LFS # Install Git LFS

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -6,7 +6,7 @@ Small, none, Minecraftia
Line 2: Line 2:
"Documentation" "Documentation"
Large, non, Minecrafter Large, none, Minecrafter
Overall settings: Overall settings:
- drop shadow - drop shadow

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1,9 @@
Generated at https://textcraft.net/
Line 1:
"Sponsors"
Mid
None
Minecrafter
Drop shadow
3d-style view

View File

@@ -8,7 +8,7 @@ An option to stop the server after a specified time has been added for niche app
A `.skip-stop` file can be created in the `/data` directory to make the server skip autostopping, for as long as the file is present. The autostop timer will also be reset. A `.skip-stop` file can be created in the `/data` directory to make the server skip autostopping, for as long as the file is present. The autostop timer will also be reset.
A starting, example compose file has been provided in [examples/docker-compose-autostop.yml](https://github.com/itzg/docker-minecraft-server/blob/master/examples/docker-compose-autostop.yml). A starting, example compose file has been provided in [examples/autostop/compose.yml](https://github.com/itzg/docker-minecraft-server/blob/master/examples/autostop/compose.yml).
Enable the Autostop functionality by setting: Enable the Autostop functionality by setting:

View File

@@ -1,4 +1,84 @@
## Simple image additions
You can easily build upon the base image using an inline Dockerfile.
```yaml title="compose.yaml"
services:
mc:
build:
context: .
dockerfile_inline: |
FROM itzg/minecraft-server:latest
RUN apt-get update && apt-get install -y \
webp \
&& rm -rf /var/lib/apt/lists/*
pull: true # Always pull new base image
pull_policy: build
restart: unless-stopped
environment:
EULA: true
ports:
- "25565:25565/tcp"
volumes:
- ./data:/data
```
Here is an example to add Nvidia GPU support for C2ME:
??? Example "C2ME GPU example"
```yaml title="compose.yaml"
services:
mc:
build:
context: .
dockerfile_inline: |
FROM itzg/minecraft-server:java25
# Install OpenCL loader and NVIDIA driver capabilities
RUN apt-get update && apt-get install -y \
ocl-icd-libopencl1 \
opencl-headers \
clinfo \
&& rm -rf /var/lib/apt/lists/*
# 1. Create the vendor directory
# 2. Tell OpenCL to use the NVIDIA library
RUN mkdir -p /etc/OpenCL/vendors && \
echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd
# Tell the NVIDIA container runtime to expose all GPU capabilities (including compute/utility)
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility,graphics,video
COPY ./mods /mods
pull: true # Always pull new base image
pull_policy: build
restart: unless-stopped
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
environment:
EULA: true
TYPE: "FABRIC"
VERSION: 1.21.10
MEMORY: 8G
MODRINTH_PROJECTS: |-
fabric-api
c2me
ports:
- "25565:25565/tcp"
volumes:
- ./data:/data
```
!!! tip "For advanced use only" !!! tip "For advanced use only"
This page describes a capability that is not applicable to most users. It is only intended for rare cases when a very specific Java base image is needed or additional packages need to be installed that are not generally applicable or would bloat the image size. This page describes a capability that is not applicable to most users. It is only intended for rare cases when a very specific Java base image is needed or additional packages need to be installed that are not generally applicable or would bloat the image size.

View File

@@ -21,6 +21,30 @@ docker compose -f compose-dev.yml run --rm -it [-e key=value] mc-dev
To speed up the development cycle, it is recommended to set `SETUP_ONLY` to `true` as part of the run command above. To speed up the development cycle, it is recommended to set `SETUP_ONLY` to `true` as part of the run command above.
## Building the image with a new release of a tool
In this exapmle, let's say that [mc-image-helper](https://github.com/itzg/mc-image-helper) has been [released](https://github.com/itzg/mc-image-helper/releases) at 1.56.0, but the corresponding changes in the image [scripts](https://github.com/itzg/docker-minecraft-server/tree/23205471db9814cff9c6602361dbc6cdd6c4230a/scripts) need to be tested against that version while updating [the Dockerfile](https://github.com/itzg/docker-minecraft-server/blob/23205471db9814cff9c6602361dbc6cdd6c4230a/Dockerfile#L58).
```yaml title="tests/manual/optional-projects/compose.yml" hl_lines="7"
services:
mc:
build:
# ...or wherever you cloned the docker-minecraft-server repo
context: ../../..
args:
MC_HELPER_VERSION: 1.56.0
environment:
EULA: true
TYPE: "FABRIC"
MODRINTH_PROJECTS: |
fabric-api
pl3xmap?:beta
ports:
- "25565:25565/tcp"
volumes:
- ./data:/data
```
## Using development copy of tools ## Using development copy of tools
In the cloned repo, such as [`mc-image-helper`](https://github.com/itzg/mc-image-helper), install the distribution locally by running: In the cloned repo, such as [`mc-image-helper`](https://github.com/itzg/mc-image-helper), install the distribution locally by running:

View File

@@ -86,6 +86,54 @@ Where:
To temporarily disable processing of the `MODRINTH_PROJECTS` list, then comment out the `MODRINTH_PROJECTS` environment variable. To temporarily disable processing of the `MODRINTH_PROJECTS` list, then comment out the `MODRINTH_PROJECTS` environment variable.
## Optional projects
Projects that are not critical for the server to function can be marked as **optional** by appending a `?` to the project slug or ID. When a compatible version cannot be found for an optional project, the server logs a warning and continues startup instead of failing.
This is particularly useful for server-side mods that tend to lag behind on Minecraft updates, such as map renderers (Pl3xmap, BlueMap), performance mods (Lithium, C2ME), or admin tools (Spark, LuckPerms).
```yaml
MODRINTH_PROJECTS: |
fabric-api
lithium
pl3xmap?
bluemap?:beta
```
The `?` marker can be combined with all existing format options:
| Format | Example |
|----------------------------|---------------------------|
| Slug only | `pl3xmap?` |
| With version | `pl3xmap?:Oa9ZDzZq` |
| With release type | `pl3xmap?:beta` |
| With loader prefix | `fabric:pl3xmap?` |
| Full combination | `fabric:pl3xmap?:beta` |
| In listing files | `pl3xmap?` *(one per line)* |
When combined with [`VERSION_FROM_MODRINTH_PROJECTS`](#version-from-projects), optional projects are **excluded** from the version calculation. This means an optional mod that hasn't been updated yet will never block a Minecraft version upgrade.
!!! example "Automatic upgrades without optional-mod breakage"
```yaml
MODRINTH_PROJECTS: |
fabric-api
lithium
pl3xmap?
VERSION_FROM_MODRINTH_PROJECTS: true
```
If a new Minecraft version is released and `fabric-api` + `lithium` support it but `pl3xmap` does not:
1. The resolved `VERSION` is set to the new version (pl3xmap is not considered)
2. `fabric-api` and `lithium` are installed normally
3. `pl3xmap` is skipped with a warning in the logs
4. On a future restart, once pl3xmap publishes a compatible build, it is picked up automatically
!!! note
Optional projects marked with `?` in listing files (`@/path/to/file.txt`) are supported ; the `?` is parsed from each line the same way as inline entries.
## Version from Projects ## Version from Projects
When the environment variable `VERSION_FROM_MODRINTH_PROJECTS` is set to "true" the Minecraft [`VERSION`](../versions/minecraft.md) will be automatically determined by looking at the most recent version of Minecraft that is supported by all the projects provided in `MODRINTH_PROJECTS`. When the environment variable `VERSION_FROM_MODRINTH_PROJECTS` is set to "true" the Minecraft [`VERSION`](../versions/minecraft.md) will be automatically determined by looking at the most recent version of Minecraft that is supported by all the projects provided in `MODRINTH_PROJECTS`.
@@ -115,4 +163,3 @@ When the environment variable `VERSION_FROM_MODRINTH_PROJECTS` is set to "true"
`MODRINTH_LOADER` `MODRINTH_LOADER`
: When using a custom server, set this to specify which loader type will be requested during lookups : When using a custom server, set this to specify which loader type will be requested during lookups

View File

@@ -1,25 +1,25 @@
click==8.3.1 click==8.3.2
colorama==0.4.6 colorama==0.4.6
deepmerge==2.0 deepmerge==2.0
ghp-import==2.1.0 ghp-import==2.1.0
griffe==2.0.0 griffe==2.0.2
Jinja2==3.1.6 Jinja2==3.1.6
Markdown==3.10.2 Markdown==3.10.2
MarkupSafe==3.0.3 MarkupSafe==3.0.3
mergedeep==1.3.4 mergedeep==1.3.4
mkdocs==1.6.1 mkdocs==1.6.1
mkdocs-autorefs==1.4.4 mkdocs-autorefs==1.4.4
mkdocs-get-deps==0.2.0 mkdocs-get-deps==0.2.2
mkdocstrings==1.0.3 mkdocstrings==1.0.3
mkdocstrings-python==2.0.3 mkdocstrings-python==2.0.3
packaging==26.0 packaging==26.1
pathspec==1.0.4 pathspec==1.0.4
platformdirs==4.9.2 platformdirs==4.9.6
Pygments==2.19.2 Pygments==2.20.0
pymdown-extensions==10.21 pymdown-extensions==10.21.2
python-dateutil==2.9.0.post0 python-dateutil==2.9.0.post0
PyYAML==6.0.3 PyYAML==6.0.3
pyyaml_env_tag==1.1 pyyaml_env_tag==1.1
six==1.17.0 six==1.17.0
watchdog==6.0.0 watchdog==6.0.0
# zensical @ file:/// zensical==0.0.33

View File

@@ -397,6 +397,12 @@ This image maps known server properties as described in [this section](configura
<td><code>Randomly generated</code></td> <td><code>Randomly generated</code></td>
<td>✅</td> <td>✅</td>
</tr> </tr>
<tr>
<td><code>RCON_PASSWORD_FILE</code></td>
<td>Can be set to read the RCON password from a file. Overrides <code>RCON_PASSWORD</code> if both are set.</td>
<td><code></code></td>
<td>⬜️</td>
</tr>
<tr> <tr>
<td><code>RCON_PORT</code></td> <td><code>RCON_PORT</code></td>
<td>The port for RCON</td> <td>The port for RCON</td>

View File

@@ -15,25 +15,19 @@ where `<tag>` refers to the first column of this table:
| latest | 25 | Ubuntu | Hotspot | amd64, arm64 | | | latest | 25 | Ubuntu | Hotspot | amd64, arm64 | |
| stable | 25 | Ubuntu | Hotspot | amd64, arm64 | | | stable | 25 | Ubuntu | Hotspot | amd64, arm64 | |
| java25 | 25 | Ubuntu | Hotspot | amd64, arm64 | | | java25 | 25 | Ubuntu | Hotspot | amd64, arm64 | |
| java25-alpine | 25 | Alpine | Hotspot | amd64, arm64 | |
| java25-jdk | 25 | Ubuntu | Hotspot+JDK | amd64, arm64 | | | java25-jdk | 25 | Ubuntu | Hotspot+JDK | amd64, arm64 | |
| java25-graalvm | 25 | Oracle | Oracle GraalVM (3) | amd64, arm64 | (5) |
| java21 | 21 | Ubuntu | Hotspot | amd64, arm64 | | | java21 | 21 | Ubuntu | Hotspot | amd64, arm64 | |
| java21-jdk | 21 | Ubuntu | Hotspot+JDK | amd64, arm64 | | | java21-jdk | 21 | Ubuntu | Hotspot+JDK | amd64, arm64 | |
| java21-alpine | 21 | Alpine | Hotspot | amd64, arm64 | | | java21-alpine | 21 | Alpine | Hotspot | amd64, arm64 | |
| java21-graalvm | 21 | Oracle | Oracle GraalVM (3) | amd64, arm64 | (5) |
| java17 | 17 | Ubuntu | Hotspot | amd64, arm64, armv7 | | | java17 | 17 | Ubuntu | Hotspot | amd64, arm64, armv7 | |
| java17-graalvm | 17 | Oracle | Oracle GraalVM (3) | amd64, arm64 | (5) | | java16 | 16 | Ubuntu | Hotspot | amd64, arm64, armv7 | (1) |
| java16 | 16 | Ubuntu | Hotspot | amd64, arm64, armv7 | (4) |
| java11 | 11 | Ubuntu | Hotspot | amd64, arm64, armv7 | | | java11 | 11 | Ubuntu | Hotspot | amd64, arm64, armv7 | |
| java8 | 8 | Ubuntu | Hotspot | amd64, arm64, armv7 | | | java8 | 8 | Ubuntu | Hotspot | amd64, arm64, armv7 | |
Notes Notes
1. Why no arm64 for Java 17 Alpine? That is because the base images, such as [elipse-temurin](https://hub.docker.com/_/eclipse-temurin/tags?page=&page_size=&ordering=&name=17-jre-alpine) do not provide support for that. Use the Ubuntu-based images instead. 1. This version of Java is [recommended for PaperMC 1.16.5](https://docs.papermc.io/paper/getting-started/#requirements)
2. Short-term variant, subject to deprecation upon next version introduction
3. Based on the [Oracle GraalVM images](https://blogs.oracle.com/java/post/new-oracle-graalvm-container-images), which as of JDK 17, are now under the [GraalVM Free License](https://blogs.oracle.com/java/post/graalvm-free-license) incorporating what used to be known as the GraalVM Enterprise.
4. This version of Java is [recommended for PaperMC 1.16.5](https://docs.papermc.io/paper/getting-started/#requirements)
5. Due to these images using Oracle Linux, (which is based on Red Hat Enterprise Linux) Forge Installer will not work due to its use of zlib-ng. Use other images for initial installation and Forge version upgrade.
!!! example "Example using java8" !!! example "Example using java8"
@@ -127,6 +121,7 @@ Forge also doesn't support openj9 JVM implementation.
The following image tags have been deprecated and are no longer receiving updates: The following image tags have been deprecated and are no longer receiving updates:
- java25-graalvm, java21-graalvm, java17-graalvm
- adopt13 - adopt13
- adopt14 - adopt14
- adopt15 - adopt15

View File

@@ -2,7 +2,8 @@ To use a different Minecraft version, pass the `VERSION` environment variable (c
- `LATEST` for latest release (the default) - `LATEST` for latest release (the default)
- `SNAPSHOT` for latest snapshot - `SNAPSHOT` for latest snapshot
- a specific version, such as `1.7.9`, `25w35a`, `26.1`, or `26.1-snapshot-1` - a specific legacy version, such as `1.7.9`, `25w35a`, `1.15.2-pre2` or `1.21.11-rc1`
- a specific [new version numbering system](https://www.minecraft.net/en-us/article/minecraft-new-version-numbering-system) version like `26.1`, `26.1-snapshot-1`, `26.1-pre-1`, or `26.1-rc-1`
- or an alpha and beta version, such as "b1.7.3" (server download might not exist) - or an alpha and beta version, such as "b1.7.3" (server download might not exist)
For example, to use the latest snapshot: For example, to use the latest snapshot:

View File

@@ -144,6 +144,7 @@
"smart-hud", "smart-hud",
"smithing-template-viewer", "smithing-template-viewer",
"smooth-font", "smooth-font",
"smooth-swapping",
"smoothwater", "smoothwater",
"sodium", "sodium",
"sodium-extra", "sodium-extra",

View File

@@ -39,8 +39,6 @@
"distraction_free_recipes", "distraction_free_recipes",
"drippyloadingscreen", "drippyloadingscreen",
"eating-animation", "eating-animation",
"emi",
"emi_loot",
"emi_trade", "emi_trade",
"emiffect", "emiffect",
"emitrades", "emitrades",
@@ -94,6 +92,7 @@
"seasonhud", "seasonhud",
"ShoulderSurfing", "ShoulderSurfing",
"skinlayers3d", "skinlayers3d",
"smoothswapping",
"sodium", "sodium",
"sorted_enchantments", "sorted_enchantments",
"tooltipfix", "tooltipfix",

View File

@@ -24,12 +24,20 @@
"jvm": "hotspot", "jvm": "hotspot",
"architectures": ["amd64", "arm64"] "architectures": ["amd64", "arm64"]
}, },
{
"tag": "java25-alpine",
"java": "25",
"distribution": "alpine",
"jvm": "hotspot",
"architectures": ["amd64", "arm64"]
},
{ {
"tag": "java25-graalvm", "tag": "java25-graalvm",
"java": "25", "java": "25",
"distribution": "oracle", "distribution": "oracle",
"jvm": "graalvm", "jvm": "graalvm",
"architectures": ["amd64", "arm64"] "architectures": ["amd64", "arm64"],
"deprecated": true
}, },
{ {
"tag": "java24", "tag": "java24",
@@ -67,7 +75,8 @@
"java": "21", "java": "21",
"distribution": "oracle", "distribution": "oracle",
"jvm": "graalvm", "jvm": "graalvm",
"architectures": ["amd64", "arm64"] "architectures": ["amd64", "arm64"],
"deprecated": true
}, },
{ {
"tag": "java21-jdk", "tag": "java21-jdk",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 75 KiB

View File

@@ -54,8 +54,8 @@ fi
if isTrue "${DEBUG_MEMORY:-false}"; then if isTrue "${DEBUG_MEMORY:-false}"; then
log "Memory usage and availability (in MB)" log "Memory usage and availability (in MB)"
uname -pars uname -pars | applyLogPrefix
free -m free -m | applyLogPrefix
fi fi
########################################## ##########################################
@@ -156,7 +156,11 @@ export DECLARED_TYPE=${TYPE^^}
export DECLARED_VERSION="$VERSION" export DECLARED_VERSION="$VERSION"
if isTrue "${VERSION_FROM_MODRINTH_PROJECTS:-}" && [[ ${MODRINTH_PROJECTS:-} ]]; then if isTrue "${VERSION_FROM_MODRINTH_PROJECTS:-}" && [[ ${MODRINTH_PROJECTS:-} ]]; then
if ! VERSION=$(mc-image-helper version-from-modrinth-projects --projects "${MODRINTH_PROJECTS}"); then args=()
if [[ ${MODRINTH_PROJECTS_DEFAULT_VERSION_TYPE:-} ]]; then
args+=(--allowed-version-type "${MODRINTH_PROJECTS_DEFAULT_VERSION_TYPE:-}")
fi
if ! VERSION=$(mc-image-helper version-from-modrinth-projects "${args[@]}" --projects "${MODRINTH_PROJECTS}"); then
logError "failed to resolve version from MODRINTH_PROJECTS: ${MODRINTH_PROJECTS}" logError "failed to resolve version from MODRINTH_PROJECTS: ${MODRINTH_PROJECTS}"
exit 1 exit 1
fi fi

View File

@@ -125,6 +125,12 @@ function logn() {
echo -n "[init] $*" echo -n "[init] $*"
} }
# Use as
# cmd | applyLogPrefix
function applyLogPrefix() {
sed 's/^/[init] /'
}
function log() { function log() {
local oldState local oldState
# The return status when listing options is zero if all optnames are enabled, non- zero otherwise. # The return status when listing options is zero if all optnames are enabled, non- zero otherwise.

View File

@@ -0,0 +1,17 @@
services:
mc:
build:
# ...or wherever you cloned the docker-minecraft-server repo
context: ../../..
args:
MC_HELPER_VERSION: 1.56.0
environment:
EULA: true
TYPE: "FABRIC"
MODRINTH_PROJECTS: |
fabric-api
pl3xmap?:beta
ports:
- "25565:25565/tcp"
volumes:
- ./data:/data