mirror of
https://github.com/itzg/docker-minecraft-server.git
synced 2026-07-05 16:15:10 +00:00
Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 78ecbb5749 | |||
| e992e71988 | |||
| 3cc2e64163 | |||
| f1dd0f3d71 | |||
| 292b2f757e | |||
| 82043d556e | |||
| d9bf26cc17 | |||
| 8b076e4868 | |||
| 4c534490f2 | |||
| 314beec407 | |||
| 2ecf6776e2 | |||
| dadecdac28 |
@@ -104,7 +104,7 @@ jobs:
|
|||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v6.0.3
|
uses: actions/checkout@v7
|
||||||
with:
|
with:
|
||||||
# for build-files step
|
# for build-files step
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
@@ -141,13 +141,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@v4.1.0
|
uses: docker/setup-buildx-action@v4
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v4.1.0
|
uses: docker/setup-qemu-action@v4.1.0
|
||||||
|
|
||||||
- name: Build for test
|
- name: Build for test
|
||||||
uses: docker/build-push-action@v7.2.0
|
uses: docker/build-push-action@v7
|
||||||
with:
|
with:
|
||||||
platforms: linux/amd64
|
platforms: linux/amd64
|
||||||
tags: ${{ env.IMAGE_TO_TEST }}
|
tags: ${{ env.IMAGE_TO_TEST }}
|
||||||
@@ -187,7 +187,7 @@ jobs:
|
|||||||
password: ${{ github.token }}
|
password: ${{ github.token }}
|
||||||
|
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
uses: docker/build-push-action@v7.2.0
|
uses: docker/build-push-action@v7
|
||||||
if: github.actor == github.repository_owner
|
if: github.actor == github.repository_owner
|
||||||
with:
|
with:
|
||||||
platforms: ${{ matrix.platforms }}
|
platforms: ${{ matrix.platforms }}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
name: Label Sponsor Contributions
|
name: Sponsor Labeler
|
||||||
|
|
||||||
on:
|
on:
|
||||||
issues:
|
issues:
|
||||||
types:
|
types:
|
||||||
@@ -9,15 +10,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
label-sponsor:
|
label-sponsor:
|
||||||
runs-on: ubuntu-latest
|
uses: itzg/github-workflows/.github/workflows/sponsor-labeler.yml@main
|
||||||
permissions:
|
with:
|
||||||
pull-requests: write
|
author: ${{ github.event.issue.user.login || github.event.pull_request.user.login }}
|
||||||
issues: write
|
number: ${{ github.event.issue.number || github.event.pull_request.number }}
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Check if sponsor
|
|
||||||
uses: JasonEtco/is-sponsor-label-action@v1
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
with:
|
|
||||||
label: sponsor
|
|
||||||
@@ -13,13 +13,13 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v7
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v4
|
||||||
|
|
||||||
- name: Build docs image
|
- name: Build docs image
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v7
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: docs/Dockerfile
|
file: docs/Dockerfile
|
||||||
|
|||||||
@@ -53,16 +53,16 @@ jobs:
|
|||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v6.0.3
|
uses: actions/checkout@v7
|
||||||
with:
|
with:
|
||||||
# for build-files step
|
# for build-files step
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Setup Docker Buildx
|
- name: Setup Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v4.1.0
|
uses: docker/setup-buildx-action@v4
|
||||||
|
|
||||||
- name: Confirm multi-arch build
|
- name: Confirm multi-arch build
|
||||||
uses: docker/build-push-action@v7.2.0
|
uses: docker/build-push-action@v7
|
||||||
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@v7.2.0
|
uses: docker/build-push-action@v7
|
||||||
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"
|
||||||
|
|||||||
+1
-1
@@ -43,7 +43,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/mc-monitor
|
# renovate: datasource=github-releases packageName=itzg/mc-monitor
|
||||||
ARG MC_MONITOR_VERSION=0.16.7
|
ARG MC_MONITOR_VERSION=0.16.8
|
||||||
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
||||||
--var version=${MC_MONITOR_VERSION} --var app=mc-monitor --file {{.app}} \
|
--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
|
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
||||||
|
|||||||
@@ -26,7 +26,10 @@ docker run -d --pull=always \
|
|||||||
|
|
||||||
By default, supported server types remove stale server libraries during installation by setting `CLEAN_SERVER_LIBRARIES` to `true`. Set `CLEAN_SERVER_LIBRARIES` to `false` to disable this cleanup if it causes unexpected behavior.
|
By default, supported server types remove stale server libraries during installation by setting `CLEAN_SERVER_LIBRARIES` to `true`. Set `CLEAN_SERVER_LIBRARIES` to `false` to disable this cleanup if it causes unexpected behavior.
|
||||||
|
|
||||||
Currently, library cleanup is supported by `TYPE=PAPER`. Other server jar types are not yet supported.
|
Currently, library cleanup is supported by
|
||||||
|
|
||||||
|
- `TYPE=PAPER`
|
||||||
|
- `TYPE=PURPUR`
|
||||||
|
|
||||||
## Running as alternate user/group ID
|
## Running as alternate user/group ID
|
||||||
|
|
||||||
@@ -244,4 +247,4 @@ To also include the timestamp with each log, set `LOG_TIMESTAMP` to "true". The
|
|||||||
|
|
||||||
```
|
```
|
||||||
[init] 2022-02-05 16:58:33+00:00 Starting the Minecraft server...
|
[init] 2022-02-05 16:58:33+00:00 Starting the Minecraft server...
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -42,6 +42,19 @@ There are optional volume paths that can be attached to supply content to be cop
|
|||||||
`/mods`
|
`/mods`
|
||||||
: content in this directory is synchronized into `/data/mods` for server types that use mods, [as described above](#mods-vs-plugins). For special cases, the source can be changed by setting `COPY_MODS_SRC` and destination by setting `COPY_MODS_DEST`.
|
: content in this directory is synchronized into `/data/mods` for server types that use mods, [as described above](#mods-vs-plugins). For special cases, the source can be changed by setting `COPY_MODS_SRC` and destination by setting `COPY_MODS_DEST`.
|
||||||
|
|
||||||
|
!!! example "Loading mods from a local directory"
|
||||||
|
|
||||||
|
This is the most basic example, where `./mods` is mounted as `/mods`. If the directory with the server's mods is located somewhere else, `./mods` can be modified accordingly.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
environment:
|
||||||
|
EULA: "TRUE"
|
||||||
|
TYPE: "NEOFORGE"
|
||||||
|
volumes:
|
||||||
|
- "./data:/data"
|
||||||
|
- "./mods:/mods"
|
||||||
|
```
|
||||||
|
|
||||||
`/config`
|
`/config`
|
||||||
: contents are synchronized into `/data/config` by default, but can be changed with `COPY_CONFIG_DEST`. For example, `-v ./config:/config -e COPY_CONFIG_DEST=/data` will allow you to copy over files like `bukkit.yml` and so on directly into the server directory. The source can be changed by setting `COPY_CONFIG_SRC`. Set `SYNC_SKIP_NEWER_IN_DESTINATION=false` if you want files from `/config` to take precedence over newer files in `/data/config`.
|
: contents are synchronized into `/data/config` by default, but can be changed with `COPY_CONFIG_DEST`. For example, `-v ./config:/config -e COPY_CONFIG_DEST=/data` will allow you to copy over files like `bukkit.yml` and so on directly into the server directory. The source can be changed by setting `COPY_CONFIG_SRC`. Set `SYNC_SKIP_NEWER_IN_DESTINATION=false` if you want files from `/config` to take precedence over newer files in `/data/config`.
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ docker run -d --pull=always \
|
|||||||
|
|
||||||
packwiz modpack definitions are processed before other mod definitions (`MODPACK`, `MODS`, etc.) to allow for additional processing/overrides you may want to perform (in case of mods not available via Modrinth/CurseForge, or you do not maintain the pack).
|
packwiz modpack definitions are processed before other mod definitions (`MODPACK`, `MODS`, etc.) to allow for additional processing/overrides you may want to perform (in case of mods not available via Modrinth/CurseForge, or you do not maintain the pack).
|
||||||
|
|
||||||
|
If the pack ships a `.env` file that you reference with `LOAD_ENV_FROM_FILE`, that file is re-loaded immediately after the packwiz installer runs, so the freshly downloaded values are applied to the remaining startup stages. Note that `TYPE` and `VERSION` are resolved earlier (before the deploy is dispatched), so a pack-provided `.env` cannot change those from within packwiz; use `LOAD_ENV_FROM_GENERIC_PACK` or `LOAD_ENV_FROM_ARCHIVE` for those.
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
|
|
||||||
packwiz is pre-configured to only download server mods. If client-side mods are downloaded and cause issues, check your pack.toml configuration, and make sure any client-only mods are not set to `"both"`, but rather `"client"` for the side configuration item.
|
packwiz is pre-configured to only download server mods. If client-side mods are downloaded and cause issues, check your pack.toml configuration, and make sure any client-only mods are not set to `"both"`, but rather `"client"` for the side configuration item.
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
click==8.4.1
|
click==8.4.2
|
||||||
colorama==0.4.6
|
colorama==0.4.6
|
||||||
deepmerge==2.0
|
deepmerge==2.1.0
|
||||||
ghp-import==2.1.0
|
ghp-import==2.1.0
|
||||||
griffe==2.0.2
|
griffe==2.1.0
|
||||||
Jinja2==3.1.6
|
Jinja2==3.1.6
|
||||||
Markdown==3.10.2
|
Markdown==3.10.2
|
||||||
MarkupSafe==3.0.3
|
MarkupSafe==3.0.3
|
||||||
@@ -11,15 +11,15 @@ mkdocs==1.6.1
|
|||||||
mkdocs-autorefs==1.4.4
|
mkdocs-autorefs==1.4.4
|
||||||
mkdocs-get-deps==0.2.2
|
mkdocs-get-deps==0.2.2
|
||||||
mkdocstrings==1.0.4
|
mkdocstrings==1.0.4
|
||||||
mkdocstrings-python==2.0.4
|
mkdocstrings-python==2.0.5
|
||||||
packaging==26.2
|
packaging==26.2
|
||||||
pathspec==1.1.1
|
pathspec==1.1.1
|
||||||
platformdirs==4.10.0
|
platformdirs==4.10.0
|
||||||
Pygments==2.20.0
|
Pygments==2.20.0
|
||||||
pymdown-extensions==10.21.3
|
pymdown-extensions==11.0
|
||||||
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==0.0.45
|
zensical==0.0.46
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ function getGTNHdownloadPath(){
|
|||||||
else
|
else
|
||||||
if ! release_object="$(
|
if ! release_object="$(
|
||||||
curl -fsSL "https://downloads.gtnewhorizons.com/versions.json" \
|
curl -fsSL "https://downloads.gtnewhorizons.com/versions.json" \
|
||||||
| jq -r --arg USRIN $GTNH_PACK_VERSION '.versions|to_entries|sort_by(.value.releaseDate)|map(select(.key==$USRIN))|.[]'
|
| jq -r --arg USRIN "$GTNH_PACK_VERSION" '.versions|to_entries|sort_by(.value.releaseDate)|map(select(.key==$USRIN))|.[]'
|
||||||
)"; then logError "Failed to retrieve release from https://downloads.gtnewhorizons.com/versions.json"
|
)"; then logError "Failed to retrieve release from https://downloads.gtnewhorizons.com/versions.json"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -160,7 +160,7 @@ function handleGTNH() {
|
|||||||
deleteGTNHbackup
|
deleteGTNHbackup
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -n $GTNH_PACK_VERSION ]] && isFalse "$SKIP_GTNH_UPDATE_CHECK" ; then
|
if [[ -n "$GTNH_PACK_VERSION" ]] && isFalse "$SKIP_GTNH_UPDATE_CHECK" ; then
|
||||||
|
|
||||||
getGTNHdownloadPath
|
getGTNHdownloadPath
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ elif [[ $PAPER_DOWNLOAD_URL ]]; then
|
|||||||
--url="$PAPER_DOWNLOAD_URL"
|
--url="$PAPER_DOWNLOAD_URL"
|
||||||
)
|
)
|
||||||
|
|
||||||
if [[ $CLEAN_SERVER_LIBRARIES ]]; then
|
if isTrue $CLEAN_SERVER_LIBRARIES; then
|
||||||
args+=(--clean-libraries)
|
args+=(--clean-libraries)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ else
|
|||||||
args+=(--build="$PAPER_BUILD")
|
args+=(--build="$PAPER_BUILD")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $CLEAN_SERVER_LIBRARIES ]]; then
|
if isTrue $CLEAN_SERVER_LIBRARIES; then
|
||||||
args+=(--clean-libraries)
|
args+=(--clean-libraries)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ IFS=$'\n\t'
|
|||||||
: "${PURPUR_BUILD:=LATEST}"
|
: "${PURPUR_BUILD:=LATEST}"
|
||||||
: "${PURPUR_DOWNLOAD_URL:=}"
|
: "${PURPUR_DOWNLOAD_URL:=}"
|
||||||
: "${PURPUR_CONFIG_REPO:=}"
|
: "${PURPUR_CONFIG_REPO:=}"
|
||||||
|
: "${CLEAN_SERVER_LIBRARIES:=true}"
|
||||||
|
|
||||||
# shellcheck source=start-utils
|
# shellcheck source=start-utils
|
||||||
. "$(dirname "$0")/start-utils"
|
. "$(dirname "$0")/start-utils"
|
||||||
@@ -13,10 +14,15 @@ isDebugging && set -x
|
|||||||
resultsFile=/data/.purpur.env
|
resultsFile=/data/.purpur.env
|
||||||
|
|
||||||
if [[ $PURPUR_DOWNLOAD_URL ]]; then
|
if [[ $PURPUR_DOWNLOAD_URL ]]; then
|
||||||
if ! mc-image-helper install-purpur \
|
args=(
|
||||||
--output-directory=/data \
|
--output-directory=/data
|
||||||
--results-file="$resultsFile" \
|
--results-file="$resultsFile"
|
||||||
--url="${PURPUR_DOWNLOAD_URL}"; then
|
--url="${PURPUR_DOWNLOAD_URL}"
|
||||||
|
)
|
||||||
|
if isTrue "$CLEAN_SERVER_LIBRARIES"; then
|
||||||
|
args+=(--clean-libraries)
|
||||||
|
fi
|
||||||
|
if ! mc-image-helper install-purpur "${args[@]}"; then
|
||||||
logError "Failed to download from custom Purpur URL"
|
logError "Failed to download from custom Purpur URL"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -29,6 +35,9 @@ else
|
|||||||
if [[ $PURPUR_BUILD ]]; then
|
if [[ $PURPUR_BUILD ]]; then
|
||||||
args+=(--build="$PURPUR_BUILD")
|
args+=(--build="$PURPUR_BUILD")
|
||||||
fi
|
fi
|
||||||
|
if isTrue "$CLEAN_SERVER_LIBRARIES"; then
|
||||||
|
args+=(--clean-libraries)
|
||||||
|
fi
|
||||||
if ! mc-image-helper install-purpur "${args[@]}"; then
|
if ! mc-image-helper install-purpur "${args[@]}"; then
|
||||||
logError "Failed to download Purpur"
|
logError "Failed to download Purpur"
|
||||||
exit 1
|
exit 1
|
||||||
|
|||||||
@@ -50,6 +50,16 @@ function handlePackwiz() {
|
|||||||
logError "Failed to run packwiz installer"
|
logError "Failed to run packwiz installer"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# packwiz may have just downloaded/updated the env file referenced by
|
||||||
|
# LOAD_ENV_FROM_FILE. The initial load in start-configuration happened
|
||||||
|
# before this point, so re-load it now to pick up the pack's values for
|
||||||
|
# the remaining setup stages (server.properties, JVM args, etc.).
|
||||||
|
if [[ ${LOAD_ENV_FROM_FILE:-} ]]; then
|
||||||
|
if ! loadEnvFromFile "${LOAD_ENV_FROM_FILE}"; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -560,6 +560,17 @@ function extract() {
|
|||||||
# remaining args are paths within the archive to extract; if none, extract everything
|
# remaining args are paths within the archive to extract; if none, extract everything
|
||||||
|
|
||||||
type=$(file -b --mime-type "${src}")
|
type=$(file -b --mime-type "${src}")
|
||||||
|
if [[ "$type" == application/octet-stream ]]; then
|
||||||
|
logWarning "Detected non-specific file type $type for $src"
|
||||||
|
case "$src" in
|
||||||
|
*.zip)
|
||||||
|
log "Assuming zip from extension"
|
||||||
|
type=application/zip
|
||||||
|
;;
|
||||||
|
# otherwise fall through to
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
case "${type}" in
|
case "${type}" in
|
||||||
application/zip)
|
application/zip)
|
||||||
unzip -o -q -d "${destDir}" "${src}" "$@"
|
unzip -o -q -d "${destDir}" "${src}" "$@"
|
||||||
|
|||||||
Reference in New Issue
Block a user