mirror of
https://github.com/itzg/docker-minecraft-server.git
synced 2026-02-17 07:03:57 +00:00
Compare commits
34 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
67b0074a9e | ||
|
|
a8900661f2 | ||
|
|
ae32ce0738 | ||
|
|
1370f58c26 | ||
|
|
89a6e1ad88 | ||
|
|
dc97022b98 | ||
|
|
190ecd3278 | ||
|
|
15016996e2 | ||
|
|
fd83920383 | ||
|
|
5fe65a68c3 | ||
|
|
89ffb2377a | ||
|
|
8c52b98d91 | ||
|
|
9d749ab514 | ||
|
|
1c0fe6ff10 | ||
|
|
ae4756f5a7 | ||
|
|
6cbedd8c26 | ||
|
|
62be34bae9 | ||
|
|
c0f1a7e1cb | ||
|
|
06ba3c8c77 | ||
|
|
0ec908b243 | ||
|
|
d9615e3558 | ||
|
|
dcf2f46620 | ||
|
|
8ba47ea280 | ||
|
|
21593d2e43 | ||
|
|
c8a7513322 | ||
|
|
66d0605502 | ||
|
|
5fad540c57 | ||
|
|
04713222c9 | ||
|
|
483cd3a1d8 | ||
|
|
5b549c0483 | ||
|
|
c57760e4b4 | ||
|
|
fd3655be88 | ||
|
|
d6897a649e | ||
|
|
9f1a18ef34 |
45
.github/workflows/build-multiarch.yml
vendored
45
.github/workflows/build-multiarch.yml
vendored
@@ -20,8 +20,8 @@ jobs:
|
||||
matrix:
|
||||
# NOTE: the "latest" variant is identified in the Docker meta step's 'latest' config
|
||||
variant:
|
||||
- java23
|
||||
- java23-graalvm
|
||||
- java24
|
||||
- java24-graalvm
|
||||
- java21
|
||||
- java21-alpine
|
||||
- java21-graalvm
|
||||
@@ -33,15 +33,14 @@ jobs:
|
||||
- java8-graalvm-ce
|
||||
- java8-openj9
|
||||
- java8-jdk
|
||||
- java11
|
||||
include:
|
||||
# JAVA 23
|
||||
- variant: java23
|
||||
baseImage: eclipse-temurin:23-jre
|
||||
# JAVA 24
|
||||
- variant: java24
|
||||
baseImage: eclipse-temurin:24-jre
|
||||
platforms: linux/amd64,linux/arm64
|
||||
mcVersion: latest
|
||||
- variant: java23-graalvm
|
||||
baseImage: container-registry.oracle.com/graalvm/jdk:23-ol8
|
||||
- variant: java24-graalvm
|
||||
baseImage: container-registry.oracle.com/graalvm/jdk:24-ol8
|
||||
platforms: linux/amd64,linux/arm64
|
||||
mcVersion: latest
|
||||
# JAVA 21:
|
||||
@@ -75,11 +74,6 @@ jobs:
|
||||
baseImage: eclipse-temurin:17-jre-alpine
|
||||
platforms: linux/amd64
|
||||
mcVersion: 1.20.4
|
||||
# JAVA 11:
|
||||
- variant: java11
|
||||
baseImage: adoptopenjdk:11-jre-hotspot
|
||||
platforms: linux/amd64,linux/arm/v7,linux/arm64
|
||||
mcVersion: 1.16.5
|
||||
# JAVA 8: NOTE: Unable to go past 8u312 because of Forge dependencies
|
||||
- variant: java8
|
||||
baseImage: eclipse-temurin:8u312-b07-jre-focal
|
||||
@@ -119,16 +113,18 @@ jobs:
|
||||
${{ github.repository_owner }}/minecraft-server
|
||||
ghcr.io/${{ github.repository_owner }}/minecraft-server
|
||||
tags: |
|
||||
# For the "main" variant, it gets the tag as-is, without suffix
|
||||
type=ref,event=tag,enable=${{ matrix.variant == env.MAIN_VARIANT }}
|
||||
# and each variant (including main one) gets the tag with the variant suffix, such as 2023.1.1-java17
|
||||
type=ref,event=tag,suffix=-${{ matrix.variant }}
|
||||
# Apply the variant as a moving tag for most recent commit per variant
|
||||
type=raw,value=${{ matrix.variant }},enable=${{ github.ref_name == github.event.repository.default_branch }}
|
||||
# For the "main" variant, it gets the tag as-is
|
||||
type=pep440,pattern={{version}},enable=${{ matrix.variant == env.MAIN_VARIANT }}
|
||||
# ...and all variants (including main one) get the tag with the variant suffix, such as 2023.1.1-java17
|
||||
type=pep440,pattern={{version}},suffix=-${{ matrix.variant }}
|
||||
# latest tag gets a moving 'stable' image tag applied to the main variant
|
||||
type=pep440,pattern=stable,enable=${{ matrix.variant == env.MAIN_VARIANT }}
|
||||
# ...and qualified stable for all variants
|
||||
type=pep440,pattern=stable,suffix=-${{ matrix.variant }}
|
||||
# for building test/* branch images
|
||||
type=ref,event=branch,suffix=-${{ matrix.variant }},enable=${{ github.ref_name != github.event.repository.default_branch }}
|
||||
# latest repo tag gets a moving 'stable' image tag applied to the main variant
|
||||
type=raw,value=stable,enable=${{ github.ref_type == 'tag' && matrix.variant == env.MAIN_VARIANT }}
|
||||
# apply the variant as a moving tag for most recent commit per variant
|
||||
type=raw,value=${{ matrix.variant }},enable=${{ github.ref_name == github.event.repository.default_branch }}
|
||||
# for backward compatibility with users referencing java8-multiarch, this will set an extra label on java8
|
||||
type=raw,value=java8-multiarch,enable=${{ matrix.variant == 'java8' && github.ref_name == github.event.repository.default_branch }}
|
||||
# NOTE this identifies which variant will be published as "latest", which isn't
|
||||
@@ -145,7 +141,7 @@ jobs:
|
||||
uses: docker/setup-qemu-action@v3.6.0
|
||||
|
||||
- name: Build for test
|
||||
uses: docker/build-push-action@v6.15.0
|
||||
uses: docker/build-push-action@v6.17.0
|
||||
with:
|
||||
platforms: linux/amd64
|
||||
tags: ${{ env.IMAGE_TO_TEST }}
|
||||
@@ -183,7 +179,7 @@ jobs:
|
||||
password: ${{ github.token }}
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v6.15.0
|
||||
uses: docker/build-push-action@v6.17.0
|
||||
if: github.actor == github.repository_owner
|
||||
with:
|
||||
platforms: ${{ matrix.platforms }}
|
||||
@@ -207,5 +203,8 @@ jobs:
|
||||
build-args: |
|
||||
BASE_IMAGE=${{ matrix.baseImage }}
|
||||
BUILD_FILES_REV=${{ steps.build-files-rev.outputs.REV }}
|
||||
BUILDTIME=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }}
|
||||
VERSION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}
|
||||
REVISION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}
|
||||
cache-from: type=gha,scope=${{ matrix.variant }}
|
||||
cache-to: type=gha,mode=max,scope=${{ matrix.variant }}
|
||||
|
||||
4
.github/workflows/verify-pr.yml
vendored
4
.github/workflows/verify-pr.yml
vendored
@@ -56,7 +56,7 @@ jobs:
|
||||
uses: docker/setup-buildx-action@v3.10.0
|
||||
|
||||
- name: Confirm multi-arch build
|
||||
uses: docker/build-push-action@v6.15.0
|
||||
uses: docker/build-push-action@v6.17.0
|
||||
with:
|
||||
platforms: ${{ matrix.platforms }}
|
||||
# ensure latest base image is used
|
||||
@@ -66,7 +66,7 @@ jobs:
|
||||
cache-from: type=gha,scope=${{ matrix.variant }}
|
||||
|
||||
- name: Build for test
|
||||
uses: docker/build-push-action@v6.15.0
|
||||
uses: docker/build-push-action@v6.17.0
|
||||
with:
|
||||
# Only build single platform since loading multi-arch image into daemon fails with
|
||||
# "docker exporter does not currently support exporting manifest lists"
|
||||
|
||||
15
Dockerfile
15
Dockerfile
@@ -26,11 +26,11 @@ EXPOSE 25565
|
||||
ARG APPS_REV=1
|
||||
ARG GITHUB_BASEURL=https://github.com
|
||||
|
||||
ARG EASY_ADD_VERSION=0.8.9
|
||||
ARG EASY_ADD_VERSION=0.8.10
|
||||
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
|
||||
|
||||
ARG RESTIFY_VERSION=1.7.7
|
||||
ARG RESTIFY_VERSION=1.7.9
|
||||
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
||||
--var version=${RESTIFY_VERSION} --var app=restify --file {{.app}} \
|
||||
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
||||
@@ -40,7 +40,7 @@ RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
||||
--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
|
||||
|
||||
ARG MC_MONITOR_VERSION=0.15.3
|
||||
ARG MC_MONITOR_VERSION=0.15.5
|
||||
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
||||
--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
|
||||
@@ -50,7 +50,7 @@ RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
||||
--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
|
||||
|
||||
ARG MC_HELPER_VERSION=1.41.5
|
||||
ARG MC_HELPER_VERSION=1.41.9
|
||||
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
|
||||
ARG MC_HELPER_REV=1
|
||||
@@ -69,7 +69,7 @@ ENV TYPE=VANILLA VERSION=LATEST EULA="" UID=1000 GID=1000 LC_ALL=en_US.UTF-8
|
||||
COPY --chmod=755 scripts/start* /
|
||||
COPY --chmod=755 bin/ /usr/local/bin/
|
||||
COPY --chmod=755 bin/mc-health /health.sh
|
||||
COPY --chmod=644 files/* /image/
|
||||
COPY --chmod=755 files/* /image/
|
||||
COPY --chmod=755 files/auto /auto
|
||||
|
||||
RUN curl -fsSL -o /image/Log4jPatcher.jar https://github.com/CreeperHost/Log4jPatcher/releases/download/v1.0.1/Log4jPatcher-1.0.1.jar
|
||||
@@ -78,3 +78,8 @@ RUN dos2unix /start* /auto/*
|
||||
|
||||
ENTRYPOINT [ "/start" ]
|
||||
HEALTHCHECK --start-period=2m --retries=2 --interval=30s CMD mc-health
|
||||
|
||||
ARG BUILDTIME=local
|
||||
ARG VERSION=local
|
||||
ARG REVISION=local
|
||||
RUN echo "buildtime=${BUILDTIME}\nversion=${VERSION}\nrevision=${REVISION}" > /etc/image.properties
|
||||
|
||||
@@ -46,8 +46,9 @@ To let the JVM calculate the heap size from the container declared memory limit,
|
||||
MEMORY: ""
|
||||
JVM_XX_OPTS: "-XX:MaxRAMPercentage=75"
|
||||
deploy:
|
||||
limits:
|
||||
memory: 4G
|
||||
resources:
|
||||
limits:
|
||||
memory: 4G
|
||||
```
|
||||
|
||||
!!! important
|
||||
|
||||
@@ -13,6 +13,17 @@
|
||||
|
||||
[Shulker](https://github.com/jeremylvln/Shulker) is a Kubernetes operator for managing complex and dynamic Minecraft infrastructures, including game servers and proxies. It uses the docker-minecraft-server and docker-bungeecord images under-the-hood.
|
||||
|
||||
## With Ansible
|
||||
|
||||
[Ansible](https://docs.ansible.com/ansible/latest/getting_started/introduction.html) is an open-source task automation tool built in [Python](https://www.python.org/). Ansible playbooks can be used to automate all kinds of tasks, including deploying remote Minecraft servers.
|
||||
|
||||
### Using the MASH playbook
|
||||
|
||||
[The MASH Playbook](https://github.com/mother-of-all-self-hosting/mash-playbook) is a premade playbook with the option to deploy a [wide variety of open-source services](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/supported-services.md) to your server(s), including [docker-minecraft-server](https://github.com/XHawk87/ansible-role-minecraft), making it a good option if you want all the bells and whistles alongside your Minecraft server.
|
||||
- Check out the [Installation Guide](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/README.md) for the MASH playbook to get started.
|
||||
- You can then enable [Minecraft](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/minecraft.md) in your vars.yml.
|
||||
- Enable any supporting services that you might find useful, such as [user authentication](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/authelia.md), [remote backups](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/backup-borg.md), [email relay](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/exim-relay.md), [cron monitoring](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/healthchecks.md), [audio and video conferencing](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/jitsi.md), databases ([MariaDB](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/mariadb.md), [PostgresSQL](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/postgres.md)), [push notifications](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/ntfy.md), [uptime monitoring](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/uptime-kuma.md), [a website](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/wordpress.md), as well as installing any [extra files, folders, applications, services and running commands](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/auxiliary.md) automatically on deployment.
|
||||
|
||||
## On CloudFormation (AWS)
|
||||
|
||||
If you're looking for a simple way to deploy this to the Amazon Web Services Cloud, check out the [Minecraft Server Deployment (CloudFormation) repository](https://github.com/vatertime/minecraft-spot-pricing). This repository contains a CloudFormation template that will get you up and running in AWS in a matter of minutes. Optionally it uses Spot Pricing so the server is very cheap, and you can easily turn it off when not in use.
|
||||
|
||||
@@ -5,3 +5,34 @@ To troubleshoot just the command-line used to start the Minecraft server, set th
|
||||
To troubleshoot any issues with memory allocation reported by the JVM, set the environment variable `DEBUG_MEMORY` to `true`.
|
||||
|
||||
If you are experiencing any issues with the "Changing ownership of /data" step, that can be disabled by setting `SKIP_CHOWN_DATA` to `true`.
|
||||
|
||||
To confirm the image version that has been pulled, use the following command, replacing `itzg/minecraft-server` as needed for specific image tags:
|
||||
|
||||
## Image labels
|
||||
|
||||
```shell
|
||||
docker image inspect itzg/minecraft-server -f "{{json .Config.Labels}}"
|
||||
```
|
||||
|
||||
such as
|
||||
|
||||
```json
|
||||
{
|
||||
"org.opencontainers.image.authors": "... <...@gmail.com>",
|
||||
"org.opencontainers.image.created": "2025-04-03T02:15:51.405Z",
|
||||
"org.opencontainers.image.description": "Docker image that provides a Minecraft Server for Java Edition that automatically downloads selected version at startup",
|
||||
"org.opencontainers.image.licenses": "Apache-2.0",
|
||||
"org.opencontainers.image.ref.name": "ubuntu",
|
||||
"org.opencontainers.image.revision": "d6897a649ecbc16b5fb2e1500e24b64ef80270a0",
|
||||
"org.opencontainers.image.source": "https://github.com/itzg/docker-minecraft-server",
|
||||
"org.opencontainers.image.title": "docker-minecraft-server",
|
||||
"org.opencontainers.image.url": "https://github.com/itzg/docker-minecraft-server",
|
||||
"org.opencontainers.image.version": "java21"
|
||||
}
|
||||
```
|
||||
|
||||
The labels that are most interesting are:
|
||||
|
||||
- `org.opencontainers.image.created` : the date/time the image was built
|
||||
- `org.opencontainers.image.revision` : which maps to <https://github.com/itzg/docker-minecraft-server/commit/REVISION>
|
||||
- `org.opencontainers.image.version` : image tag and variant [as described in this page](../versions/java.md)
|
||||
@@ -1,7 +1,7 @@
|
||||
mkdocs-material == 9.6.10
|
||||
mkdocs-material == 9.6.14
|
||||
mkdocs-autorefs == 1.4.1
|
||||
mkdocstrings[python] == 0.29.1
|
||||
mkdocs-literate-nav == 0.6.2
|
||||
mdx-gh-links == 0.4
|
||||
mkdocs-click == 0.8.1
|
||||
mkdocs-click == 0.9.0
|
||||
mkdocs-static-i18n == 1.3.0
|
||||
@@ -41,7 +41,17 @@ A specific loader or launcher version other than the latest can be requested usi
|
||||
FABRIC_LOADER_VERSION: 0.13.1
|
||||
```
|
||||
|
||||
!!! note
|
||||
!!! note "Fabric API"
|
||||
|
||||
As [mentioned on the Fabric download page](https://fabricmc.net/use/installer/), most mods will require the Fabric API mod to be installed. That can be easily done by utilizing [the Modrinth downloads feature](../../mods-and-plugins/modrinth.md), such as adding this to the `environment` of a compose file service:
|
||||
|
||||
```yaml
|
||||
TYPE: FABRIC
|
||||
MODRINTH_PROJECTS: |
|
||||
fabric-api
|
||||
```
|
||||
|
||||
!!! note "Alternate launcher"
|
||||
|
||||
If you wish to use an alternative launcher you can:
|
||||
|
||||
|
||||
@@ -10,26 +10,29 @@ or explicitly include the tag, such as
|
||||
|
||||
where `<tag>` refers to the first column of this table:
|
||||
|
||||
| Tag | Java version | Linux | JVM Type | Architecture |
|
||||
|------------------|--------------|--------|--------------------|---------------------|
|
||||
| latest | 21 | Ubuntu | Hotspot | amd64, arm64 |
|
||||
| stable | 21 | Ubuntu | Hotspot | amd64, arm64 |
|
||||
| java23 | 23 | Ubuntu | Hotspot | amd64, arm64 |
|
||||
| java23-graalvm | 23 | Oracle | Oracle GraalVM[^1] | amd64, arm64 |
|
||||
| java21 | 21 | Ubuntu | Hotspot | amd64, arm64 |
|
||||
| java21-jdk | 21 | Ubuntu | Hotspot+JDK | amd64, arm64 |
|
||||
| java21-alpine | 21 | Alpine | Hotspot | amd64, arm64 |
|
||||
| java21-graalvm | 21 | Oracle | Oracle GraalVM[^1] | amd64, arm64 |
|
||||
| java17 | 17 | Ubuntu | Hotspot | amd64, arm64, armv7 |
|
||||
| java17-graalvm | 17 | Oracle | Oracle GraalVM[^1] | amd64, arm64 |
|
||||
| java17-alpine | 17 | Alpine | Hotspot | amd64 (1) |
|
||||
| java11 | 11 | Ubuntu | Hotspot | amd64, arm64, armv7 |
|
||||
| java8 | 8 | Ubuntu | Hotspot | amd64, arm64, armv7 |
|
||||
| java8-jdk | 8 | Ubuntu | Hotspot+JDK | amd64 |
|
||||
| java8-openj9 | 8 | Debian | OpenJ9 | amd64 |
|
||||
| java8-graalvm-ce | 8 | Oracle | GraalVM CE | amd64 |
|
||||
| Tag | Java version | Linux | JVM Type | Architecture | Note |
|
||||
|------------------|--------------|--------|--------------------|---------------------|------|
|
||||
| latest | 21 | Ubuntu | Hotspot | amd64, arm64 | |
|
||||
| stable | 21 | Ubuntu | Hotspot | amd64, arm64 | |
|
||||
| java24 | 24 | Ubuntu | Hotspot | amd64, arm64 | (2) |
|
||||
| java24-graalvm | 24 | Oracle | Oracle GraalVM (3) | amd64, arm64 | (2) |
|
||||
| java21 | 21 | Ubuntu | Hotspot | amd64, arm64 | |
|
||||
| java21-jdk | 21 | Ubuntu | Hotspot+JDK | amd64, arm64 | |
|
||||
| java21-alpine | 21 | Alpine | Hotspot | amd64, arm64 | |
|
||||
| java21-graalvm | 21 | Oracle | Oracle GraalVM (3) | amd64, arm64 | |
|
||||
| java17 | 17 | Ubuntu | Hotspot | amd64, arm64, armv7 | |
|
||||
| java17-graalvm | 17 | Oracle | Oracle GraalVM (3) | amd64, arm64 | |
|
||||
| java17-alpine | 17 | Alpine | Hotspot | amd64 (1) | |
|
||||
| java8 | 8 | Ubuntu | Hotspot | amd64, arm64, armv7 | |
|
||||
| java8-jdk | 8 | Ubuntu | Hotspot+JDK | amd64 | |
|
||||
| java8-openj9 | 8 | Debian | OpenJ9 | amd64 | |
|
||||
| java8-graalvm-ce | 8 | Oracle | GraalVM CE | amd64 | |
|
||||
|
||||
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.
|
||||
2. Short-term variant, subject to deprecation upon next version introduction
|
||||
3. Based on the [Oracle GraalMV 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.
|
||||
|
||||
!!! example "Example using java8"
|
||||
|
||||
@@ -123,17 +126,17 @@ Forge also doesn't support openj9 JVM implementation.
|
||||
|
||||
The following image tags have been deprecated and are no longer receiving updates:
|
||||
|
||||
- java19
|
||||
- adopt13
|
||||
- adopt14
|
||||
- adopt15
|
||||
- openj9-nightly
|
||||
- multiarch-latest
|
||||
- java11
|
||||
- java16/java16-openj9
|
||||
- java17-graalvm-ce
|
||||
- java17-openj9
|
||||
- java19
|
||||
- java20-graalvm, java20, java20-alpine
|
||||
- java23-*
|
||||
- java8-multiarch is still built and pushed, but please move to java8 instead
|
||||
- java8-alpine
|
||||
|
||||
[^1]: Based on the [Oracle GraalMV 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.
|
||||
@@ -16,19 +16,6 @@ services:
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_SLUG: craftoria
|
||||
MEMORY: 8G
|
||||
# TODO: replace with slugs and see if already excluded by cf-exclude-include.json
|
||||
CF_EXCLUDE_MODS: |
|
||||
737481
|
||||
363363
|
||||
394468
|
||||
986380
|
||||
844662
|
||||
568563
|
||||
915902
|
||||
690971
|
||||
455508
|
||||
1089803
|
||||
511319
|
||||
volumes:
|
||||
# Use managed volume by default, but can change to a relative path like
|
||||
# ./data:/data
|
||||
|
||||
@@ -7,6 +7,10 @@ services:
|
||||
# VERSION: 1.21.4
|
||||
# FABRIC_INSTALLER_VERSION: 1.0.1
|
||||
# FABRIC_LOADER_VERSION: 0.16.10
|
||||
# Since Fabric server type only includes the loader, most times
|
||||
# the fabric-api is required for other mods to function
|
||||
MODRINTH_PROJECTS: |
|
||||
fabric-api
|
||||
ports:
|
||||
- "25565:25565"
|
||||
volumes:
|
||||
|
||||
@@ -12,6 +12,7 @@ services:
|
||||
# Use Pack ID from https://www.feed-the-beast.com/modpacks/119-ftb-presents-direwolf20-120?tab=about
|
||||
FTB_MODPACK_ID: "119"
|
||||
# FTB_MODPACK_VERSION_ID: ""
|
||||
MEMORY: 4G
|
||||
volumes:
|
||||
# use a named, managed volume for data volume
|
||||
- data:/data
|
||||
|
||||
@@ -25,11 +25,17 @@ use_proxy() {
|
||||
}
|
||||
|
||||
use_server_list_ping() {
|
||||
if [[ "${VERSION^^}" == "LATEST" || "${VERSION^^}" == "SNAPSHOT" ]]; then
|
||||
# Don't use server-list ping for unknown version
|
||||
return 1
|
||||
fi
|
||||
|
||||
if versionLessThan 1.7; then
|
||||
echo "--use-server-list-ping"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
mc_server_listening() {
|
||||
mc-monitor status $(use_proxy) --host "${SERVER_HOST:-localhost}" --port "$SERVER_PORT" $(use_server_list_ping) --timeout 10s >&/dev/null
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
"beehivetooltips",
|
||||
"better-advancements",
|
||||
"better-foliage",
|
||||
"better-modlist-neoforge",
|
||||
"better-placement",
|
||||
"better-sprinting",
|
||||
"better-third-person",
|
||||
@@ -21,11 +22,13 @@
|
||||
"block-drops-jei-addon",
|
||||
"blur-forge",
|
||||
"cartography",
|
||||
"chattoggle",
|
||||
"cherished-worlds",
|
||||
"chunk-animator",
|
||||
"clickable-advancements",
|
||||
"compass-coords",
|
||||
"configured",
|
||||
"controllable",
|
||||
"controlling",
|
||||
"craftpresence",
|
||||
"ctm",
|
||||
@@ -35,6 +38,7 @@
|
||||
"ding",
|
||||
"drippy-loading-screen",
|
||||
"dynamic-surroundings",
|
||||
"dynamic-view",
|
||||
"dynamiclights-reforged",
|
||||
"easiervillagertrading",
|
||||
"effective-forge",
|
||||
@@ -42,18 +46,25 @@
|
||||
"embeddium-extension",
|
||||
"embeddium-extras",
|
||||
"enchantment-descriptions",
|
||||
"enhanced-boss-bars",
|
||||
"enhancedvisuals",
|
||||
"entity-collision-fps-fix",
|
||||
"entity-model-features",
|
||||
"entity-texture-features-fabric",
|
||||
"entityculling",
|
||||
"equipment-compare",
|
||||
"essential-mod",
|
||||
"euphoria-patches",
|
||||
"extreme-sound-muffler",
|
||||
"ezzoom",
|
||||
"fading-night-vision",
|
||||
"falling-leaves-forge",
|
||||
"fancymenu",
|
||||
"farsight",
|
||||
"faster-ladder-climbing",
|
||||
"flerovium",
|
||||
"foamfix-optimization-mod",
|
||||
"forgeskyboxes",
|
||||
"fps-reducer",
|
||||
"free-cam",
|
||||
"ftb-backups-2",
|
||||
@@ -61,6 +72,7 @@
|
||||
"hwyla",
|
||||
"iceberg",
|
||||
"ignitioncoil",
|
||||
"illager-raid-music",
|
||||
"inmisaddon",
|
||||
"iris-flywheel-compat",
|
||||
"irisshaders",
|
||||
@@ -76,8 +88,10 @@
|
||||
"legendary-tooltips",
|
||||
"lighty",
|
||||
"loot-capacitor-tooltips",
|
||||
"loot-journal",
|
||||
"lootbeams",
|
||||
"magnesium-extras",
|
||||
"make-bubbles-pop",
|
||||
"menumobs",
|
||||
"minecraft-rich-presence",
|
||||
"model-gap-fix",
|
||||
@@ -93,7 +107,10 @@
|
||||
"overloaded-armor-bar",
|
||||
"packmenu",
|
||||
"packmodemenu",
|
||||
"particular",
|
||||
"particular-reforged",
|
||||
"reauth",
|
||||
"rebind-narrator",
|
||||
"reblured",
|
||||
"reeses-sodium-options",
|
||||
"reforgium",
|
||||
@@ -105,9 +122,11 @@
|
||||
"seamless-loading-screen",
|
||||
"seamless-loading-screen-forge",
|
||||
"searchables",
|
||||
"seasonhud",
|
||||
"shulkerboxviewer",
|
||||
"skin-layers-3d",
|
||||
"smart-hud",
|
||||
"smithing-template-viewer",
|
||||
"smooth-font",
|
||||
"smoothwater",
|
||||
"sodium",
|
||||
@@ -115,9 +134,9 @@
|
||||
"sodium-options-api",
|
||||
"sodium-rubidium-occlusion-culling-fix",
|
||||
"sound",
|
||||
"sound-reloader",
|
||||
"sound-filters",
|
||||
"sound-physics-remastered",
|
||||
"sound-reloader",
|
||||
"stellar-sky",
|
||||
"swingthroughgrass",
|
||||
"textrues-embeddium-options",
|
||||
@@ -131,6 +150,7 @@
|
||||
"vanillafix",
|
||||
"visuality",
|
||||
"waila-harvestability",
|
||||
"wakes-reforged",
|
||||
"wawla",
|
||||
"xaeroplus",
|
||||
"yungs-menu-tweaks",
|
||||
@@ -140,6 +160,9 @@
|
||||
"all-of-fabric-6": {
|
||||
"forceIncludes": ["revelationary"]
|
||||
},
|
||||
"beyond-depth": {
|
||||
"forceIncludes": ["particular-reforged"]
|
||||
},
|
||||
"create-arcane-engineering": {
|
||||
"forceIncludes": ["just-enough-resources-jer"]
|
||||
},
|
||||
|
||||
@@ -32,6 +32,7 @@ isDebugging && set -x
|
||||
export HOME=/data
|
||||
|
||||
log "Running as uid=$(id -u) gid=$(id -g) with /data as '$(ls -lnd /data)'"
|
||||
log "Image info: $(paste -d, -s /etc/image.properties)"
|
||||
|
||||
if [ ! -e /data/eula.txt ]; then
|
||||
if ! isTrue "$EULA"; then
|
||||
|
||||
@@ -9,35 +9,34 @@ isDebugging && set -x
|
||||
resolveVersion
|
||||
: "${MOHIST_BUILD:=lastSuccessfulBuild}"
|
||||
|
||||
mohistBaseUrl="https://mohistmc.com/api/v2/projects/mohist/"
|
||||
mohistApiUrl="${mohistBaseUrl}${VERSION}/builds/"
|
||||
# Docs at https://mohistmc.com/mohistmc-api
|
||||
mohistApiUrl="https://api.mohistmc.com/project/mohist"
|
||||
mohistDownloadsPage="https://mohistmc.com/downloadSoftware?project=mohist"
|
||||
|
||||
function logMohistAvailableVerisons(){
|
||||
logError " check ${mohistBaseUrl} for available versions"
|
||||
logError " and set VERSION accordingly"
|
||||
}
|
||||
|
||||
if ! get --exists "${mohistApiUrl}"; then
|
||||
if ! get --exists "${mohistApiUrl}/${VERSION}/builds"; then
|
||||
logError "Mohist builds do not exist for ${VERSION}"
|
||||
logMohistAvailableVerisons
|
||||
logError " check ${mohistDownloadsPage} for available versions"
|
||||
logError " and set VERSION accordingly"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${MOHIST_BUILD}" == "lastSuccessfulBuild" ]]; then
|
||||
# Get the latest build number from the API
|
||||
buildNumber=$(
|
||||
get --json-path '$.builds[-1].number' "${mohistApiUrl}"
|
||||
)
|
||||
if ! buildNumber=$(
|
||||
get --json-path '$[0].id' "${mohistApiUrl}/${VERSION}/builds"
|
||||
); then
|
||||
logError "failed to list Mohist builds for ${VERSION}"
|
||||
exit 1
|
||||
fi
|
||||
MOHIST_BUILD="${buildNumber}"
|
||||
fi
|
||||
|
||||
downloadUrl=$(
|
||||
get --json-path "$.builds[?(@.number==${MOHIST_BUILD})].url" "${mohistApiUrl}"
|
||||
)
|
||||
downloadUrl="${mohistApiUrl}/${VERSION}/builds/${MOHIST_BUILD}/download"
|
||||
|
||||
if [[ -z "${downloadUrl}" ]]; then
|
||||
logError "Could not find build ${MOHIST_BUILD} for version ${VERSION}"
|
||||
logMohistAvailableVerisons
|
||||
logError " check ${mohistDownloadsPage} for available versions"
|
||||
logError " and set VERSION accordingly"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
@@ -5,6 +5,9 @@
|
||||
set -e
|
||||
isDebugging && set -x
|
||||
|
||||
worldDownload=/data/tmp/world.zip
|
||||
tmpWorldData=/data/tmp/world-data
|
||||
|
||||
# support absolute directories
|
||||
if [[ "${LEVEL:-world}" =~ ^\/.*$ ]]; then
|
||||
worldDest=${LEVEL}
|
||||
@@ -26,24 +29,25 @@ if [[ "$WORLD" ]] && ( isTrue "${FORCE_WORLD_COPY}" || [ ! -d "$worldDest" ] );
|
||||
|
||||
if isURL "$WORLD"; then
|
||||
log "Downloading world from $WORLD"
|
||||
if ! get -o /tmp/world.bin "$WORLD"; then
|
||||
mkdir -p /data/tmp
|
||||
if ! get -o ${worldDownload} "$WORLD"; then
|
||||
logError "Failed to download world from $WORLD"
|
||||
exit 1
|
||||
fi
|
||||
WORLD=/tmp/world.bin
|
||||
WORLD=${worldDownload}
|
||||
fi
|
||||
|
||||
if [ -f "$WORLD" ]; then
|
||||
log "Extracting world"
|
||||
|
||||
# Stage contents so that the correct subdirectory can be picked off
|
||||
mkdir -p /tmp/world-data
|
||||
if ! extract "$WORLD" /tmp/world-data; then
|
||||
mkdir -p ${tmpWorldData}
|
||||
if ! extract "$WORLD" ${tmpWorldData}; then
|
||||
logError "Extracting world from $WORLD"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
baseDirs=$(find /tmp/world-data -name "level.dat" -exec dirname "{}" \;)
|
||||
baseDirs=$(find ${tmpWorldData} -name "level.dat" -exec dirname "{}" \;)
|
||||
|
||||
if ! [[ $baseDirs ]]; then
|
||||
logError "World content is not valid since level.dat could not be found"
|
||||
@@ -128,4 +132,7 @@ if [[ "$WORLD" ]] && ( isTrue "${FORCE_WORLD_COPY}" || [ ! -d "$worldDest" ] );
|
||||
fi
|
||||
fi
|
||||
|
||||
[[ -f ${worldDownload} ]] && rm ${worldDownload}
|
||||
[[ -d ${tmpWorldData} ]] && rm -rf ${tmpWorldData}
|
||||
|
||||
exec "${SCRIPTS:-/}start-setupDatapack" "$@"
|
||||
|
||||
@@ -6,10 +6,8 @@ services:
|
||||
SETUP_ONLY: "TRUE"
|
||||
MODPACK_PLATFORM: AUTO_CURSEFORGE
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_SLUG: the-pixelmon-modpack
|
||||
CF_FILENAME_MATCHER: "9.1.2"
|
||||
# Use the image bundled one to ensure latest is being tested
|
||||
CF_EXCLUDE_INCLUDE_FILE: /image/cf-exclude-include.json
|
||||
CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/the-pixelmon-modpack/files/5954570
|
||||
DEBUG: true
|
||||
volumes:
|
||||
- ./data:/data
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ services:
|
||||
EULA: "TRUE"
|
||||
SETUP_ONLY: "TRUE"
|
||||
TYPE: FABRIC
|
||||
VERSION: 1.18.2
|
||||
VERSION: 1.20.1
|
||||
# Contains mix of Forge and Fabric mods
|
||||
CURSEFORGE_FILES: |
|
||||
https://www.curseforge.com/minecraft/mc-mods/clumps/files/4153343
|
||||
|
||||
@@ -1 +1 @@
|
||||
architectury-api@4.12.94
|
||||
architectury-api@9.2.14
|
||||
|
||||
@@ -47,6 +47,7 @@ setupOnlyMinecraftTest(){
|
||||
status=PASSED
|
||||
verify=
|
||||
if ! logs=$(docker compose run --rm -e SETUP_ONLY=true -e DEBUG="${DEBUG:-false}" mc 2>&1); then
|
||||
status=FAILED
|
||||
outputContainerLog "$logs"
|
||||
result=1
|
||||
elif [ -f verify.sh ]; then
|
||||
|
||||
Reference in New Issue
Block a user