mirror of
https://github.com/itzg/docker-minecraft-server.git
synced 2026-02-17 23:16:24 +00:00
Compare commits
82 Commits
2021.12.0-
...
2021.16.0-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d87e5bdaa2 | ||
|
|
047ef107ae | ||
|
|
1bb2f92f5b | ||
|
|
727a1f29d1 | ||
|
|
012bd3a307 | ||
|
|
ae5b19b0aa | ||
|
|
81d9c55eee | ||
|
|
2543a5417c | ||
|
|
90cfe0e151 | ||
|
|
491800280c | ||
|
|
d60c2e0815 | ||
|
|
fb0babe261 | ||
|
|
e6bc8abdc1 | ||
|
|
614f6a4be0 | ||
|
|
fbee644b4e | ||
|
|
aaf327b308 | ||
|
|
d404e0f50e | ||
|
|
c5bb83c6d0 | ||
|
|
fe9735d8c1 | ||
|
|
8bf3b64831 | ||
|
|
10dcbe7b03 | ||
|
|
9ff04f8637 | ||
|
|
dd7953ab4c | ||
|
|
23fde3387a | ||
|
|
85103cd8cf | ||
|
|
ecbdb2b18d | ||
|
|
12915b04b7 | ||
|
|
373921777a | ||
|
|
2f489b04ae | ||
|
|
a2c393ccc5 | ||
|
|
73a11c91d2 | ||
|
|
8673f919fd | ||
|
|
1e32161652 | ||
|
|
38eb769c1b | ||
|
|
5e372ed9f4 | ||
|
|
e027a81317 | ||
|
|
0a51713bd7 | ||
|
|
d5cde03db1 | ||
|
|
449f2bfa09 | ||
|
|
c9815e2ccb | ||
|
|
9bd6bc64b0 | ||
|
|
a5fe016854 | ||
|
|
93cd299c77 | ||
|
|
e8f8d8b4d4 | ||
|
|
b806ea6871 | ||
|
|
fbc8f72a22 | ||
|
|
7229c40202 | ||
|
|
cb17180dea | ||
|
|
581b514970 | ||
|
|
78ec4ba2a7 | ||
|
|
317104de30 | ||
|
|
63412975c3 | ||
|
|
9c87f8749d | ||
|
|
5fc36516f4 | ||
|
|
c608c8a57e | ||
|
|
853a9884d7 | ||
|
|
ecafaf4ea1 | ||
|
|
eb490e92c3 | ||
|
|
98c7e43927 | ||
|
|
d8786d4785 | ||
|
|
d030daf354 | ||
|
|
8a34aa5c45 | ||
|
|
98e6adbe1a | ||
|
|
bb210ff59e | ||
|
|
b94cfc44a0 | ||
|
|
2c8d1a9255 | ||
|
|
a8c11c0cdb | ||
|
|
8a9e85fb17 | ||
|
|
8a39719427 | ||
|
|
4100aa1f61 | ||
|
|
4d5fe0a03b | ||
|
|
236bb565ce | ||
|
|
7608168823 | ||
|
|
acabb9d93c | ||
|
|
4e9c00c4d5 | ||
|
|
f3826422cf | ||
|
|
9b7459ad5c | ||
|
|
c9dc6012f6 | ||
|
|
a5aec72837 | ||
|
|
af38a8fc7a | ||
|
|
58fa3c897d | ||
|
|
e45621d8e2 |
38
.github/workflows/build-multiarch.yml
vendored
38
.github/workflows/build-multiarch.yml
vendored
@@ -2,16 +2,20 @@ name: Build and publish multiarch
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- multiarch
|
||||
- multiarch-latest
|
||||
- java15
|
||||
- java16
|
||||
- master
|
||||
- "*-multiarch"
|
||||
- "multiarch*"
|
||||
- java8-openj9
|
||||
- java11*
|
||||
- java16*
|
||||
- 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"
|
||||
- "[0-9]+.[0-9]+.[0-9]+-java16"
|
||||
- "[0-9]+.[0-9]+.[0-9]+"
|
||||
- "[0-9]+.[0-9]+.[0-9]+-multiarch*"
|
||||
- "[0-9]+.[0-9]+.[0-9]+-*multiarch"
|
||||
- "[0-9]+.[0-9]+.[0-9]+-java8-openj9"
|
||||
- "[0-9]+.[0-9]+.[0-9]+-java11*"
|
||||
- "[0-9]+.[0-9]+.[0-9]+-java16*"
|
||||
paths-ignore:
|
||||
- "*.md"
|
||||
- "docs/**"
|
||||
@@ -20,6 +24,8 @@ on:
|
||||
jobs:
|
||||
docker-buildx:
|
||||
runs-on: ubuntu-20.04
|
||||
env:
|
||||
CACHE_NAME: master
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2.3.4
|
||||
@@ -33,20 +39,24 @@ jobs:
|
||||
tags: |
|
||||
type=ref,event=branch
|
||||
type=ref,event=tag
|
||||
type=edge,branch=master
|
||||
flavor: |
|
||||
latest=false
|
||||
|
||||
- name: Setup Docker Buildx
|
||||
uses: docker/setup-buildx-action@v1
|
||||
|
||||
- name: Cache Docker layers
|
||||
uses: actions/cache@v2.1.5
|
||||
uses: actions/cache@v2.1.6
|
||||
with:
|
||||
path: /tmp/.buildx-cache
|
||||
key: ${{ runner.os }}-buildx-${{ steps.meta.outputs.version }}-${{ github.sha }}
|
||||
key: ${{ runner.os }}-buildx-${{ env.CACHE_NAME }}-${{ github.sha }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-buildx-${{ steps.meta.outputs.version }}-
|
||||
${{ runner.os }}-buildx-${{ env.CACHE_NAME }}-
|
||||
${{ runner.os }}-buildx-
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v1.1.0
|
||||
uses: docker/setup-qemu-action@v1.2.0
|
||||
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v1
|
||||
@@ -56,10 +66,10 @@ jobs:
|
||||
|
||||
- name: Build and push
|
||||
id: docker_build
|
||||
uses: docker/build-push-action@v2.4.0
|
||||
uses: docker/build-push-action@v2.5.0
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64,linux/arm/v7,linux/arm64
|
||||
platforms: linux/amd64
|
||||
push: ${{ github.event_name != 'pull_request' }}
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
# ensure latest base image is used
|
||||
|
||||
2
.github/workflows/generate-toc.yml
vendored
2
.github/workflows/generate-toc.yml
vendored
@@ -17,4 +17,4 @@ jobs:
|
||||
./gh-md-toc --insert --no-backup README.md
|
||||
- uses: stefanzweifel/git-auto-commit-action@v4.11.0
|
||||
with:
|
||||
commit_message: Auto update markdown TOC
|
||||
commit_message: "docs: Auto update markdown TOC"
|
||||
12
.github/workflows/main.yml
vendored
12
.github/workflows/main.yml
vendored
@@ -3,14 +3,12 @@ name: Build and Publish
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- java8
|
||||
- openj9
|
||||
- openj9-11
|
||||
- adopt11
|
||||
- test/*
|
||||
tags:
|
||||
- "[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-11"
|
||||
@@ -31,6 +29,8 @@ jobs:
|
||||
needs:
|
||||
- test
|
||||
runs-on: ubuntu-20.04
|
||||
env:
|
||||
CACHE_NAME: master
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2.3.4
|
||||
@@ -59,12 +59,12 @@ jobs:
|
||||
uses: docker/setup-buildx-action@v1
|
||||
|
||||
- name: Cache Docker layers
|
||||
uses: actions/cache@v2.1.5
|
||||
uses: actions/cache@v2.1.6
|
||||
with:
|
||||
path: /tmp/.buildx-cache
|
||||
key: ${{ runner.os }}-buildx-${{ steps.prep.outputs.cache_version }}-${{ github.sha }}
|
||||
key: ${{ runner.os }}-buildx-${{ env.CACHE_NAME }}-${{ github.sha }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-buildx-${{ steps.prep.outputs.cache_version }}-
|
||||
${{ runner.os }}-buildx-${{ env.CACHE_NAME }}-
|
||||
${{ runner.os }}-buildx-
|
||||
|
||||
- name: Login to DockerHub
|
||||
@@ -75,7 +75,7 @@ jobs:
|
||||
|
||||
- name: Build and push
|
||||
id: docker_build
|
||||
uses: docker/build-push-action@v2.4.0
|
||||
uses: docker/build-push-action@v2.5.0
|
||||
with:
|
||||
context: .
|
||||
file: ./Dockerfile
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM adoptopenjdk:15-jre
|
||||
FROM adoptopenjdk:16-openj9
|
||||
|
||||
LABEL org.opencontainers.image.authors="Geoff Bourne <itzgeoff@gmail.com>"
|
||||
|
||||
@@ -84,5 +84,6 @@ RUN dos2unix /start* && chmod +x /start*
|
||||
RUN dos2unix /health.sh && chmod +x /health.sh
|
||||
RUN dos2unix /autopause/* && chmod +x /autopause/*.sh
|
||||
|
||||
|
||||
ENTRYPOINT [ "/start" ]
|
||||
HEALTHCHECK --start-period=1m CMD /health.sh
|
||||
|
||||
437
README.md
437
README.md
@@ -56,6 +56,7 @@ By default, the container will download the latest version of the "vanilla" [Min
|
||||
* [Helm Charts](#helm-charts)
|
||||
* [Examples](#examples)
|
||||
* [Amazon Web Services (AWS) Deployment](#amazon-web-services-aws-deployment)
|
||||
* [Using Docker Compose](#using-docker-compose)
|
||||
* [Server types](#server-types)
|
||||
* [Running a Forge Server](#running-a-forge-server)
|
||||
* [Running a Bukkit/Spigot server](#running-a-bukkitspigot-server)
|
||||
@@ -78,12 +79,15 @@ By default, the container will download the latest version of the "vanilla" [Min
|
||||
* [Modpack data directory](#modpack-data-directory)
|
||||
* [Buggy start scripts](#buggy-start-scripts)
|
||||
* [Fixing "unable to launch forgemodloader"](#fixing-unable-to-launch-forgemodloader)
|
||||
* [Optional plugins, mods, and config attach points](#optional-plugins-mods-and-config-attach-points)
|
||||
* [Auto-downloading SpigotMC/Bukkit/PaperMC plugins](#auto-downloading-spigotmcbukkitpapermc-plugins)
|
||||
* [Replacing variables inside configs](#replacing-variables-inside-configs)
|
||||
* [Running with a custom server JAR](#running-with-a-custom-server-jar)
|
||||
* [Force re-download of the server file](#force-re-download-of-the-server-file)
|
||||
* [Using Docker Compose](#using-docker-compose)
|
||||
* [Working with mods and plugins](#working-with-mods-and-plugins)
|
||||
* [Optional plugins, mods, and config attach points](#optional-plugins-mods-and-config-attach-points)
|
||||
* [Auto-downloading SpigotMC/Bukkit/PaperMC plugins](#auto-downloading-spigotmcbukkitpapermc-plugins)
|
||||
* [Downloadable mod/plugin pack for Forge, Bukkit, and Spigot Servers](#downloadable-modplugin-pack-for-forge-bukkit-and-spigot-servers)
|
||||
* [Remove old mods/plugins](#remove-old-modsplugins)
|
||||
* [Working with world data](#working-with-world-data)
|
||||
* [Downloadable world](#downloadable-world)
|
||||
* [Cloning world from a container path](#cloning-world-from-a-container-path)
|
||||
* [Overwrite world on start](#overwrite-world-on-start)
|
||||
* [Server configuration](#server-configuration)
|
||||
* [Server name](#server-name)
|
||||
* [Server port](#server-port)
|
||||
@@ -116,15 +120,13 @@ By default, the container will download the latest version of the "vanilla" [Min
|
||||
* [Level Type and Generator Settings](#level-type-and-generator-settings)
|
||||
* [Custom Server Resource Pack](#custom-server-resource-pack)
|
||||
* [World Save Name](#world-save-name)
|
||||
* [Downloadable world](#downloadable-world)
|
||||
* [Cloning world from a container path](#cloning-world-from-a-container-path)
|
||||
* [Overwrite world on start](#overwrite-world-on-start)
|
||||
* [Downloadable mod/plugin pack for Forge, Bukkit, and Spigot Servers](#downloadable-modplugin-pack-for-forge-bukkit-and-spigot-servers)
|
||||
* [Remove old mods/plugins](#remove-old-modsplugins)
|
||||
* [Online mode](#online-mode)
|
||||
* [Allow flight](#allow-flight)
|
||||
* [Other server property mappings](#other-server-property-mappings)
|
||||
* [Miscellaneous Options](#miscellaneous-options)
|
||||
* [Replacing variables inside configs](#replacing-variables-inside-configs)
|
||||
* [Running with a custom server JAR](#running-with-a-custom-server-jar)
|
||||
* [Force re-download of the server file](#force-re-download-of-the-server-file)
|
||||
* [Running as alternate user/group ID](#running-as-alternate-usergroup-id)
|
||||
* [Memory Limit](#memory-limit)
|
||||
* [JVM Options](#jvm-options)
|
||||
@@ -143,7 +145,7 @@ By default, the container will download the latest version of the "vanilla" [Min
|
||||
* [Enabling Autopause](#enabling-autopause)
|
||||
* [Running on RaspberryPi](#running-on-raspberrypi)
|
||||
|
||||
<!-- Added by: runner, at: Thu May 20 01:17:11 UTC 2021 -->
|
||||
<!-- Added by: runner, at: Wed Jun 9 12:35:18 UTC 2021 -->
|
||||
|
||||
<!--te-->
|
||||
|
||||
@@ -268,22 +270,18 @@ the server jar remain in the `/data` directory. It is safe to remove those._
|
||||
|
||||
## Running Minecraft server on different Java version
|
||||
|
||||
> **NOTE** [as of snapshot 21W19A](https://www.minecraft.net/en-us/article/minecraft-snapshot-21w19a), Java 16 is now required. Please use `itzg/minecraft-server:java16` for that version and newer. Consideration of changing the `latest` will be made after 1.17 releases.
|
||||
|
||||
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 |
|
||||
| -------------- | -------------|--------|----------|-------------------|
|
||||
| latest | 11 | Alpine | Hotspot | amd64 |
|
||||
| latest | 16 | Debian | Hotspot | amd64,arm64,armv7 |
|
||||
| java8 | 8 | Alpine | Hotspot | amd64 |
|
||||
| java8-multiarch | 8 | Debian | Hotspot | amd64,arm64,armv7 |
|
||||
| java15 | 15 | Debian | Hotspot | amd64,arm64,armv7 |
|
||||
| java15-openj9 | 15 | Debian | OpenJ9 | amd64,arm64 |
|
||||
| java8-openj9 | 8 | Debian | OpenJ9 | amd64 |
|
||||
| java11 | 11 | Debian | Hotspot | amd64,arm64,armv7 |
|
||||
| java11-openj9 | 11 | Debian | OpenJ9 | amd64 |
|
||||
| java16 | 16 | Debian | Hotspot | amd64,arm64,armv7 |
|
||||
| adopt11 | 11 | Alpine | Hotspot | amd64 |
|
||||
| openj9 | 8 | Alpine | OpenJ9 | amd64 |
|
||||
| openj9-11 | 11 | Alpine | OpenJ9 | amd64 |
|
||||
| multiarch | 11 | Debian | Hotspot | amd64,arm64,armv7 |
|
||||
| java16-openj9 | 16 | Debian | OpenJ9 | amd64 |
|
||||
| multiarch-latest | 15+ | Debian | Hotspot | amd64,arm64,armv7 |
|
||||
|
||||
For example, to use Java version 15 on any supported architecture:
|
||||
@@ -337,6 +335,37 @@ The [examples directory](https://github.com/itzg/docker-minecraft-server/tree/ma
|
||||
|
||||
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.
|
||||
|
||||
### Using Docker Compose
|
||||
|
||||
Rather than type the server options below, the port mappings above, etc
|
||||
every time you want to create new Minecraft server, you can now use
|
||||
[Docker Compose](https://docs.docker.com/compose/). Start with a
|
||||
`docker-compose.yml` file like the following:
|
||||
|
||||
```yml
|
||||
version: "3.8"
|
||||
|
||||
minecraft-server:
|
||||
image: itzg/minecraft-server
|
||||
|
||||
ports:
|
||||
- "25565:25565"
|
||||
|
||||
environment:
|
||||
EULA: "TRUE"
|
||||
|
||||
tty: true
|
||||
stdin_open: true
|
||||
restart: always
|
||||
```
|
||||
|
||||
and in the same directory as that file run
|
||||
|
||||
docker-compose up -d
|
||||
|
||||
Now, go play...or adjust the `environment` section to configure
|
||||
this server instance.
|
||||
|
||||
## Server types
|
||||
|
||||
### Running a Forge Server
|
||||
@@ -423,15 +452,13 @@ An [Airplane](https://github.com/TECHNOVE/Airplane) server, which is a fork of T
|
||||
|
||||
> **NOTE** only `VERSION=LATEST` is supported
|
||||
|
||||
> **NOTE** only Java 8 and 11 are supported
|
||||
|
||||
Extra variables:
|
||||
- `FORCE_REDOWNLOAD=false` : set to true to force the located server jar to be re-downloaded
|
||||
- `USE_FLARE_FLAGS=false` : set to true to add appropriate flags for the [Flare](https://blog.airplane.gg/flare) profiler
|
||||
|
||||
### Running a Purpur server
|
||||
|
||||
A [Purpur](https://purpur.pl3x.net/) server, which is "a fork of Paper, Tuinity, Airplane with the goal of providing new and interesting configuration options".
|
||||
A [Purpur](https://purpur.pl3x.net/) server, which is "a drop-in replacement for Paper servers designed for configurability, new fun and exciting gameplay features, and high performance built on top of Tuinity.".
|
||||
|
||||
-e TYPE=PURPUR
|
||||
|
||||
@@ -440,7 +467,6 @@ A [Purpur](https://purpur.pl3x.net/) server, which is "a fork of Paper, Tuinity,
|
||||
Extra variables:
|
||||
- `PURPUR_BUILD=LATEST` : set a specific Purpur build to use
|
||||
- `FORCE_REDOWNLOAD=false` : set to true to force the located server jar to be re-downloaded
|
||||
- `USE_FLARE_FLAGS=false` : set to true to add appropriate flags for the [Flare](https://blog.airplane.gg/flare) profiler
|
||||
|
||||
### Running a Yatopia server
|
||||
|
||||
@@ -466,7 +492,7 @@ A [Magma](https://magmafoundation.org/) server, which is a combination of Forge
|
||||
|
||||
### Running a Mohist server
|
||||
|
||||
A [Mohist](https://github.com/Mohist-Community/Mohist) server can be used with
|
||||
A [Mohist](https://github.com/MohistMC/Mohist) server can be used with
|
||||
|
||||
-e TYPE=MOHIST
|
||||
|
||||
@@ -612,7 +638,9 @@ then you apply a workaround by adding this to the run invocation:
|
||||
|
||||
-e FTB_LEGACYJAVAFIXER=true
|
||||
|
||||
## Optional plugins, mods, and config attach points
|
||||
## Working with mods and plugins
|
||||
|
||||
### Optional plugins, mods, and config attach points
|
||||
|
||||
There are optional volume paths that can be attached to supply content to be copied into the data area:
|
||||
|
||||
@@ -635,7 +663,7 @@ These paths work well if you want to have a common set of modules in a separate
|
||||
|
||||
> For more flexibility with mods/plugins preparation, you can declare directories to use in [the `MODS` variable](#downloadable-modplugin-pack-for-forge-bukkit-and-spigot-servers)
|
||||
|
||||
## Auto-downloading SpigotMC/Bukkit/PaperMC plugins
|
||||
### Auto-downloading SpigotMC/Bukkit/PaperMC plugins
|
||||
|
||||
The `SPIGET_RESOURCES` variable can be set with a comma-separated list of SpigotMC resource IDs to automatically download [SpigotMC resources/plugins](https://www.spigotmc.org/resources/) using [the spiget API](https://spiget.org/). Resources that are zip files will be expanded into the plugins directory and resources that are simply jar files will be moved there.
|
||||
|
||||
@@ -650,159 +678,65 @@ For example, the following will auto-download the [EssentialsX](https://www.spig
|
||||
|
||||
-e SPIGET_RESOURCES=9089,34315
|
||||
|
||||
## Replacing variables inside configs
|
||||
### Downloadable mod/plugin pack for Forge, Bukkit, and Spigot Servers
|
||||
|
||||
Sometimes you have mods or plugins that require configuration information that is only available at runtime.
|
||||
For example if you need to configure a plugin to connect to a database,
|
||||
you don't want to include this information in your Git repository or Docker image.
|
||||
Or maybe you have some runtime information like the server name that needs to be set
|
||||
in your config files after the container starts.
|
||||
Like the `WORLD` option above, you can specify the URL or path of a "mod pack"
|
||||
to download and install into `mods` for Forge or `plugins` for Bukkit/Spigot.
|
||||
To use this option pass the environment variable `MODPACK`, such as
|
||||
|
||||
For those cases there is the option to replace defined variables inside your configs
|
||||
with environment variables defined at container runtime.
|
||||
docker run -d -e MODPACK=http://www.example.com/mods/modpack.zip ...
|
||||
|
||||
If you set the enviroment variable `REPLACE_ENV_VARIABLES` to `TRUE` the startup script
|
||||
will go thru all files inside your `/data` volume and replace variables that match your
|
||||
defined environment variables. Variables that you want to replace need to be wrapped
|
||||
inside `${YOUR_VARIABLE}` curly brackets and prefixed with a dollar sign. This is the regular
|
||||
syntax for enviromment variables inside strings or config files.
|
||||
**NOTE:** The referenced URL must be a zip file with one or more jar files at the
|
||||
top level of the zip archive. Make sure the jars are compatible with the
|
||||
particular `TYPE` of server you are running.
|
||||
|
||||
Optionally you can also define a prefix to only match predefined environment variables.
|
||||
You may also download or copy over individual mods using the `MODS` environment variable. `MODS` contains a comma-separated list of
|
||||
- URL of a jar file
|
||||
- container path to a jar file
|
||||
- container path to a directory containing jar files
|
||||
|
||||
`ENV_VARIABLE_PREFIX="CFG_"` <-- this is the default prefix
|
||||
docker run -d -e MODS=https://www.example.com/mods/mod1.jar,/plugins/common,/plugins/special/mod2.jar ...
|
||||
|
||||
If you want use file for value (like when use secrets) you can add suffix `_FILE` to your variable name (in run command).
|
||||
### Remove old mods/plugins
|
||||
|
||||
There are some limitations to what characters you can use.
|
||||
When the option above is specified (`MODPACK`) you can also instruct script to
|
||||
delete old mods/plugins prior to installing new ones. This behaviour is desirable
|
||||
in case you want to upgrade mods/plugins from downloaded zip file.
|
||||
To use this option pass the environment variable `REMOVE_OLD_MODS="TRUE"`, such as
|
||||
|
||||
| Type | Allowed Characters |
|
||||
| ----- | ------------------- |
|
||||
| Name | `0-9a-zA-Z_-` |
|
||||
| Value | `0-9a-zA-Z_-:/=?.+` |
|
||||
docker run -d -e REMOVE_OLD_MODS="TRUE" -e MODPACK=http://www.example.com/mods/modpack.zip ...
|
||||
|
||||
Variables will be replaced in files with the following extensions:
|
||||
`.yml`, `.yaml`, `.txt`, `.cfg`, `.conf`, `.properties`.
|
||||
**WARNING:** All content of the `mods` or `plugins` directory will be deleted
|
||||
before unpacking new content from the MODPACK or MODS.
|
||||
|
||||
Specific files can be excluded by listing their name (without path) in the variable `REPLACE_ENV_VARIABLES_EXCLUDES`.
|
||||
## Working with world data
|
||||
|
||||
Paths can be excluded by listing them in the variable `REPLACE_ENV_VARIABLES_EXCLUDE_PATHS`. Path
|
||||
excludes are recursive. Here is an example:
|
||||
```
|
||||
REPLACE_ENV_VARIABLES_EXCLUDE_PATHS="/data/plugins/Essentials/userdata /data/plugins/MyPlugin"
|
||||
```
|
||||
### Downloadable world
|
||||
|
||||
Here is a full example where we want to replace values inside a `database.yml`.
|
||||
Instead of mounting the `/data` volume, you can instead specify the URL of a ZIP file containing an archived world. It will be searched for a file `level.dat` and the containing subdirectory moved to the directory named by `$LEVEL`. This means that most of the archived Minecraft worlds downloadable from the Internet will already be in the correct format.
|
||||
|
||||
```yml
|
||||
docker run -d -e WORLD=http://www.example.com/worlds/MySave.zip ...
|
||||
|
||||
---
|
||||
database:
|
||||
host: ${CFG_DB_HOST}
|
||||
name: ${CFG_DB_NAME}
|
||||
password: ${CFG_DB_PASSWORD}
|
||||
```
|
||||
**NOTE:** This URL must be accessible from inside the container. Therefore,
|
||||
you should use an IP address or a globally resolvable FQDN, or else the
|
||||
name of a linked container.
|
||||
|
||||
This is how your `docker-compose.yml` file could look like:
|
||||
**NOTE:** If the archive contains more than one `level.dat`, then the one to select can be picked with `WORLD_INDEX`, which defaults to 1.
|
||||
|
||||
```yml
|
||||
version: "3.8"
|
||||
# Other docker-compose examples in /examples
|
||||
### Cloning world from a container path
|
||||
|
||||
services:
|
||||
minecraft:
|
||||
image: itzg/minecraft-server
|
||||
ports:
|
||||
- "25565:25565"
|
||||
volumes:
|
||||
- "mc:/data"
|
||||
environment:
|
||||
EULA: "TRUE"
|
||||
ENABLE_RCON: "true"
|
||||
RCON_PASSWORD: "testing"
|
||||
RCON_PORT: 28016
|
||||
# enable env variable replacement
|
||||
REPLACE_ENV_VARIABLES: "TRUE"
|
||||
# define an optional prefix for your env variables you want to replace
|
||||
ENV_VARIABLE_PREFIX: "CFG_"
|
||||
# and here are the actual variables
|
||||
CFG_DB_HOST: "http://localhost:3306"
|
||||
CFG_DB_NAME: "minecraft"
|
||||
CFG_DB_PASSWORD_FILE: "/run/secrets/db_password"
|
||||
restart: always
|
||||
rcon:
|
||||
image: itzg/rcon
|
||||
ports:
|
||||
- "4326:4326"
|
||||
- "4327:4327"
|
||||
volumes:
|
||||
- "rcon:/opt/rcon-web-admin/db"
|
||||
The `WORLD` option can also be used to reference a directory or zip file that will be used as a source to clone or unzip the world directory.
|
||||
|
||||
volumes:
|
||||
mc:
|
||||
rcon:
|
||||
|
||||
secrets:
|
||||
db_password:
|
||||
file: ./db_password
|
||||
```
|
||||
|
||||
The content of `db_password`:
|
||||
|
||||
ug23u3bg39o-ogADSs
|
||||
|
||||
## Running with a custom server JAR
|
||||
|
||||
If you would like to run a custom server JAR, set `-e TYPE=CUSTOM` and pass the custom server
|
||||
JAR via `CUSTOM_SERVER`. It can either be a URL or a container path to an existing JAR file.
|
||||
|
||||
If it is a URL, it will only be downloaded into the `/data` directory if it wasn't already. As
|
||||
such, if you need to upgrade or re-download the JAR, then you will need to stop the container,
|
||||
remove the file from the container's `/data` directory, and start again.
|
||||
|
||||
## Force re-download of the server file
|
||||
|
||||
For VANILLA, FORGE, BUKKIT, SPIGOT, PAPER, CURSEFORGE, SPONGEVANILLA server types, set
|
||||
`$FORCE_REDOWNLOAD` to some value (e.g. 'true) to force a re-download of the server file for
|
||||
the particular server type. by adding a `-e FORCE_REDOWNLOAD=true` to your command-line.
|
||||
|
||||
For example, with PaperSpigot, it would look something like this:
|
||||
For example, the following would initially clone the world's content
|
||||
from `/worlds/basic`. Also notice in the example that you can use a
|
||||
read-only volume attachment to ensure the clone source remains pristine.
|
||||
|
||||
```
|
||||
docker run -d -v /path/on/host:/data \
|
||||
-e TYPE=PAPER -e FORCE_REDOWNLOAD=true \
|
||||
-p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server
|
||||
docker run ... -v $HOME/worlds:/worlds:ro -e WORLD=/worlds/basic
|
||||
```
|
||||
|
||||
## Using Docker Compose
|
||||
|
||||
Rather than type the server options below, the port mappings above, etc
|
||||
every time you want to create new Minecraft server, you can now use
|
||||
[Docker Compose](https://docs.docker.com/compose/). Start with a
|
||||
`docker-compose.yml` file like the following:
|
||||
|
||||
```yml
|
||||
version: "3.8"
|
||||
|
||||
minecraft-server:
|
||||
image: itzg/minecraft-server
|
||||
|
||||
ports:
|
||||
- "25565:25565"
|
||||
|
||||
environment:
|
||||
EULA: "TRUE"
|
||||
|
||||
tty: true
|
||||
stdin_open: true
|
||||
restart: always
|
||||
```
|
||||
|
||||
and in the same directory as that file run
|
||||
|
||||
docker-compose up -d
|
||||
|
||||
Now, go play...or adjust the `environment` section to configure
|
||||
this server instance.
|
||||
### Overwrite world on start
|
||||
The world will only be downloaded or copied if it doesn't exist already. Set `FORCE_WORLD_COPY=TRUE` to force overwrite the world on every server start.
|
||||
|
||||
## Server configuration
|
||||
|
||||
@@ -1082,64 +1016,6 @@ where the default is "world":
|
||||
**NOTE:** if running multiple containers be sure to either specify a different `-v` host directory for each
|
||||
`LEVEL` in use or don't use `-v` and the container's filesystem will keep things encapsulated.
|
||||
|
||||
### Downloadable world
|
||||
|
||||
Instead of mounting the `/data` volume, you can instead specify the URL of a ZIP file containing an archived world. It will be searched for a file `level.dat` and the containing subdirectory moved to the directory named by `$LEVEL`. This means that most of the archived Minecraft worlds downloadable from the Internet will already be in the correct format.
|
||||
|
||||
docker run -d -e WORLD=http://www.example.com/worlds/MySave.zip ...
|
||||
|
||||
**NOTE:** This URL must be accessible from inside the container. Therefore,
|
||||
you should use an IP address or a globally resolvable FQDN, or else the
|
||||
name of a linked container.
|
||||
|
||||
**NOTE:** If the archive contains more than one `level.dat`, then the one to select can be picked with `WORLD_INDEX`, which defaults to 1.
|
||||
|
||||
### Cloning world from a container path
|
||||
|
||||
The `WORLD` option can also be used to reference a directory or zip file that will be used as a source to clone or unzip the world directory.
|
||||
|
||||
For example, the following would initially clone the world's content
|
||||
from `/worlds/basic`. Also notice in the example that you can use a
|
||||
read-only volume attachment to ensure the clone source remains pristine.
|
||||
|
||||
```
|
||||
docker run ... -v $HOME/worlds:/worlds:ro -e WORLD=/worlds/basic
|
||||
```
|
||||
|
||||
### Overwrite world on start
|
||||
The world will only be downloaded or copied if it doesn't exist already. Set `FORCE_WORLD_COPY=TRUE` to force overwrite the world on every server start.
|
||||
|
||||
### Downloadable mod/plugin pack for Forge, Bukkit, and Spigot Servers
|
||||
|
||||
Like the `WORLD` option above, you can specify the URL or path of a "mod pack"
|
||||
to download and install into `mods` for Forge or `plugins` for Bukkit/Spigot.
|
||||
To use this option pass the environment variable `MODPACK`, such as
|
||||
|
||||
docker run -d -e MODPACK=http://www.example.com/mods/modpack.zip ...
|
||||
|
||||
**NOTE:** The referenced URL must be a zip file with one or more jar files at the
|
||||
top level of the zip archive. Make sure the jars are compatible with the
|
||||
particular `TYPE` of server you are running.
|
||||
|
||||
You may also download or copy over individual mods using the `MODS` environment variable. `MODS` contains a comma-separated list of
|
||||
- URL of a jar file
|
||||
- container path to a jar file
|
||||
- container path to a directory containing jar files
|
||||
|
||||
docker run -d -e MODS=https://www.example.com/mods/mod1.jar,/plugins/common,/plugins/special/mod2.jar ...
|
||||
|
||||
### Remove old mods/plugins
|
||||
|
||||
When the option above is specified (`MODPACK`) you can also instruct script to
|
||||
delete old mods/plugins prior to installing new ones. This behaviour is desirable
|
||||
in case you want to upgrade mods/plugins from downloaded zip file.
|
||||
To use this option pass the environment variable `REMOVE_OLD_MODS="TRUE"`, such as
|
||||
|
||||
docker run -d -e REMOVE_OLD_MODS="TRUE" -e MODPACK=http://www.example.com/mods/modpack.zip ...
|
||||
|
||||
**WARNING:** All content of the `mods` or `plugins` directory will be deleted
|
||||
before unpacking new content from the MODPACK or MODS.
|
||||
|
||||
### Online mode
|
||||
|
||||
By default, server checks connecting players against Minecraft's account database. If you want to create an offline server or your server is not connected to the internet, you can disable the server to try connecting to minecraft.net to authenticate players with environment variable `ONLINE_MODE`, like this
|
||||
@@ -1172,6 +1048,129 @@ Allows users to use flight on your server while in Survival mode, if they have a
|
||||
|
||||
## Miscellaneous Options
|
||||
|
||||
### Replacing variables inside configs
|
||||
|
||||
Sometimes you have mods or plugins that require configuration information that is only available at runtime.
|
||||
For example if you need to configure a plugin to connect to a database,
|
||||
you don't want to include this information in your Git repository or Docker image.
|
||||
Or maybe you have some runtime information like the server name that needs to be set
|
||||
in your config files after the container starts.
|
||||
|
||||
For those cases there is the option to replace defined variables inside your configs
|
||||
with environment variables defined at container runtime.
|
||||
|
||||
If you set the enviroment variable `REPLACE_ENV_VARIABLES` to `TRUE` the startup script
|
||||
will go thru all files inside your `/data` volume and replace variables that match your
|
||||
defined environment variables. Variables that you want to replace need to be wrapped
|
||||
inside `${YOUR_VARIABLE}` curly brackets and prefixed with a dollar sign. This is the regular
|
||||
syntax for enviromment variables inside strings or config files.
|
||||
|
||||
Optionally you can also define a prefix to only match predefined environment variables.
|
||||
|
||||
`ENV_VARIABLE_PREFIX="CFG_"` <-- this is the default prefix
|
||||
|
||||
If you want use file for value (like when use secrets) you can add suffix `_FILE` to your variable name (in run command).
|
||||
|
||||
There are some limitations to what characters you can use.
|
||||
|
||||
| Type | Allowed Characters |
|
||||
| ----- | ------------------- |
|
||||
| Name | `0-9a-zA-Z_-` |
|
||||
| Value | `0-9a-zA-Z_-:/=?.+` |
|
||||
|
||||
Variables will be replaced in files with the following extensions:
|
||||
`.yml`, `.yaml`, `.txt`, `.cfg`, `.conf`, `.properties`.
|
||||
|
||||
Specific files can be excluded by listing their name (without path) in the variable `REPLACE_ENV_VARIABLES_EXCLUDES`.
|
||||
|
||||
Paths can be excluded by listing them in the variable `REPLACE_ENV_VARIABLES_EXCLUDE_PATHS`. Path
|
||||
excludes are recursive. Here is an example:
|
||||
```
|
||||
REPLACE_ENV_VARIABLES_EXCLUDE_PATHS="/data/plugins/Essentials/userdata /data/plugins/MyPlugin"
|
||||
```
|
||||
|
||||
Here is a full example where we want to replace values inside a `database.yml`.
|
||||
|
||||
```yml
|
||||
|
||||
---
|
||||
database:
|
||||
host: ${CFG_DB_HOST}
|
||||
name: ${CFG_DB_NAME}
|
||||
password: ${CFG_DB_PASSWORD}
|
||||
```
|
||||
|
||||
This is how your `docker-compose.yml` file could look like:
|
||||
|
||||
```yml
|
||||
version: "3.8"
|
||||
# Other docker-compose examples in /examples
|
||||
|
||||
services:
|
||||
minecraft:
|
||||
image: itzg/minecraft-server
|
||||
ports:
|
||||
- "25565:25565"
|
||||
volumes:
|
||||
- "mc:/data"
|
||||
environment:
|
||||
EULA: "TRUE"
|
||||
ENABLE_RCON: "true"
|
||||
RCON_PASSWORD: "testing"
|
||||
RCON_PORT: 28016
|
||||
# enable env variable replacement
|
||||
REPLACE_ENV_VARIABLES: "TRUE"
|
||||
# define an optional prefix for your env variables you want to replace
|
||||
ENV_VARIABLE_PREFIX: "CFG_"
|
||||
# and here are the actual variables
|
||||
CFG_DB_HOST: "http://localhost:3306"
|
||||
CFG_DB_NAME: "minecraft"
|
||||
CFG_DB_PASSWORD_FILE: "/run/secrets/db_password"
|
||||
restart: always
|
||||
rcon:
|
||||
image: itzg/rcon
|
||||
ports:
|
||||
- "4326:4326"
|
||||
- "4327:4327"
|
||||
volumes:
|
||||
- "rcon:/opt/rcon-web-admin/db"
|
||||
|
||||
volumes:
|
||||
mc:
|
||||
rcon:
|
||||
|
||||
secrets:
|
||||
db_password:
|
||||
file: ./db_password
|
||||
```
|
||||
|
||||
The content of `db_password`:
|
||||
|
||||
ug23u3bg39o-ogADSs
|
||||
|
||||
### Running with a custom server JAR
|
||||
|
||||
If you would like to run a custom server JAR, set `-e TYPE=CUSTOM` and pass the custom server
|
||||
JAR via `CUSTOM_SERVER`. It can either be a URL or a container path to an existing JAR file.
|
||||
|
||||
If it is a URL, it will only be downloaded into the `/data` directory if it wasn't already. As
|
||||
such, if you need to upgrade or re-download the JAR, then you will need to stop the container,
|
||||
remove the file from the container's `/data` directory, and start again.
|
||||
|
||||
### Force re-download of the server file
|
||||
|
||||
For VANILLA, FORGE, BUKKIT, SPIGOT, PAPER, CURSEFORGE, SPONGEVANILLA server types, set
|
||||
`$FORCE_REDOWNLOAD` to some value (e.g. 'true) to force a re-download of the server file for
|
||||
the particular server type. by adding a `-e FORCE_REDOWNLOAD=true` to your command-line.
|
||||
|
||||
For example, with PaperSpigot, it would look something like this:
|
||||
|
||||
```
|
||||
docker run -d -v /path/on/host:/data \
|
||||
-e TYPE=PAPER -e FORCE_REDOWNLOAD=true \
|
||||
-p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server
|
||||
```
|
||||
|
||||
### Running as alternate user/group ID
|
||||
|
||||
By default, the container will switch to user ID 1000 and group ID 1000;
|
||||
@@ -1336,9 +1335,7 @@ The following environment variables define the behaviour of auto-pausing:
|
||||
|
||||
## Running on RaspberryPi
|
||||
|
||||
To run this image on a RaspberryPi 3 B+, 4, or newer, use any of the image tags [list in the Java version section](#running-minecraft-server-on-different-java-version) that specify `armv7` for the architecture, such as
|
||||
|
||||
itzg/minecraft-server:multiarch
|
||||
To run this image on a RaspberryPi 3 B+, 4, or newer, use any of the image tags [list in the Java version section](#running-minecraft-server-on-different-java-version) that specify `armv7` for the architecture, which includes `itzg/minecraft-server:latest`.
|
||||
|
||||
> NOTE: you may need to lower the memory allocation, such as `-e MEMORY=750m`
|
||||
|
||||
|
||||
@@ -4,13 +4,11 @@
|
||||
branches_list=(
|
||||
'java8'
|
||||
'java8-multiarch'
|
||||
'openj9'
|
||||
'openj9-11'
|
||||
'adopt11'
|
||||
'java15'
|
||||
'java15-openj9'
|
||||
'java8-openj9'
|
||||
'java11'
|
||||
'java11-openj9'
|
||||
'java16'
|
||||
'multiarch'
|
||||
'java16-openj9'
|
||||
'multiarch-latest'
|
||||
)
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
Place server [modpacks downloaded from CurseForge](https://www.curseforge.com/minecraft/modpacks) in this directory.
|
||||
|
||||
The example [`docker-compose-curseforge.yml`](../docker-compose-curseforge.yml) references a modpack downloaded from <https://www.curseforge.com/minecraft/modpacks/skyfactory-4/files/2787018>.
|
||||
The example [`docker-compose-curseforge.yml`](../docker-compose-curseforge.yml) references a modpack downloaded from <https://www.curseforge.com/minecraft/modpacks/skyfactory-4/files/3012800>.
|
||||
|
||||
@@ -7,9 +7,10 @@ isDebugging && set -x
|
||||
|
||||
JAVA_VER=$(java -version 2>&1 | head -1 | cut -d'"' -f2 | sed '/^1\./s///' | cut -d'.' -f1)
|
||||
|
||||
if [ "${JAVA_VER}" != "8" ] && [ "${JAVA_VER}" != "11" ]; then
|
||||
log "ERROR: Airplane server type only supports Java versions 8 and 11"
|
||||
exit 1
|
||||
if [ "${JAVA_VER}" = "8" ]; then
|
||||
JDK=8
|
||||
else
|
||||
JDK=11
|
||||
fi
|
||||
|
||||
if [ "${VERSION}" != "LATEST" ]; then
|
||||
@@ -17,10 +18,10 @@ if [ "${VERSION}" != "LATEST" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
export SERVER=airplane-${VANILLA_VERSION}-jdk${JAVA_VER}.jar
|
||||
export SERVER=airplane-${VANILLA_VERSION}-jdk${JDK}.jar
|
||||
|
||||
if [ ! -f "$SERVER" ] || isTrue "$FORCE_REDOWNLOAD"; then
|
||||
downloadUrl="https://dl.airplane.gg/latest/Airplane-JDK${JAVA_VER}/launcher-airplane.jar"
|
||||
downloadUrl="https://dl.airplane.gg/latest/Airplane-JDK${JDK}/launcher-airplane.jar"
|
||||
log "Downloading Airplane from $downloadUrl ..."
|
||||
curl -fsSL -o "$SERVER" "$downloadUrl"
|
||||
if [ ! -f "$SERVER" ]; then
|
||||
|
||||
@@ -85,13 +85,14 @@ if ! isTrue ${USE_MODPACK_START_SCRIPT:-true}; then
|
||||
fi
|
||||
|
||||
log "Installing forge server"
|
||||
(cd $(dirname "${forgeInstallerJar}"); java -jar $(basename "${forgeInstallerJar}") --installServer)
|
||||
dirOfInstaller=$(dirname "${forgeInstallerJar}")
|
||||
(cd "${dirOfInstaller}"; java -jar $(basename "${forgeInstallerJar}") --installServer)
|
||||
fi
|
||||
|
||||
echo "${FTB_SERVER_MOD}" > $installMarker
|
||||
fi
|
||||
|
||||
export SERVER=$(find ${FTB_BASE_DIR} -type f \( -path "*/libraries/*" -o -path "*/mods/*" \) -prune -o -name "forge*.jar" -not -name "forge*installer.jar" -print)
|
||||
export SERVER=$(find ${FTB_BASE_DIR} -type f \( -path "/libraries/*" -o -path "/mods/*" \) -prune -o -name "forge*.jar" -not -name "forge*installer.jar" -maxdepth 2 -print)
|
||||
if [[ -z "${SERVER}" || ! -f "${SERVER}" ]]; then
|
||||
log "ERROR unable to locate installed forge server jar"
|
||||
isDebugging && find ${FTB_BASE_DIR} -name "forge*.jar"
|
||||
@@ -184,7 +185,7 @@ if [[ $(find ${FTB_BASE_DIR} $entryScriptExpr | wc -l) = 0 ]]; then
|
||||
|
||||
# Allow up to 2 levels since some modpacks have a top-level directory named
|
||||
# for the modpack
|
||||
forgeJar=$(find ${FTB_BASE_DIR} -maxdepth 2 -name 'forge*.jar' -a -not -name 'forge*installer')
|
||||
forgeJar=$(find ${FTB_BASE_DIR} -type f \( -path "/libraries/*" -o -path "/mods/*" \) -prune -o -name "forge*.jar" -not -name "forge*installer.jar" -maxdepth 2 -print)
|
||||
if [[ "$forgeJar" ]]; then
|
||||
export FTB_BASE_DIR=$(dirname "${forgeJar}")
|
||||
log "No entry script found, so building one for ${forgeJar}"
|
||||
|
||||
@@ -52,12 +52,14 @@ fi
|
||||
|
||||
isDebugging && cat version.json
|
||||
forgeVersion=$(jq -r '.targets|unique[] | select(.name == "forge") | .version' version.json)
|
||||
fabricVersion=$(jq -r '.targets|unique[] | select(.name == "fabric") | .version' version.json)
|
||||
mcVersion=$(jq -r '.targets|unique[] | select(.name == "minecraft") | .version' version.json)
|
||||
|
||||
variants=(
|
||||
forge-${mcVersion}-${forgeVersion}.jar
|
||||
forge-${mcVersion}-${forgeVersion}-universal.jar
|
||||
forge-${mcVersion}-${forgeVersion}-${mcVersion}-universal.jar
|
||||
fabric-${mcVersion}-${fabricVersion}-server-launch.jar
|
||||
)
|
||||
for f in ${variants[@]}; do
|
||||
if [ -f $f ]; then
|
||||
@@ -66,7 +68,7 @@ for f in ${variants[@]}; do
|
||||
fi
|
||||
done
|
||||
if ! [ -v SERVER ]; then
|
||||
log "ERROR unable to locate the installed forge server jar"
|
||||
log "ERROR unable to locate the installed FTB server jar"
|
||||
ls *.jar
|
||||
exit 2
|
||||
fi
|
||||
|
||||
@@ -68,7 +68,7 @@ if [ ! -e $installMarker ]; then
|
||||
log "Unable to compute URL for $normForgeVersion"
|
||||
exit 2
|
||||
fi
|
||||
downloadUrl=http://files.minecraftforge.net/maven/net/minecraftforge/forge/$fn
|
||||
downloadUrl=https://maven.minecraftforge.net/net/minecraftforge/forge/$fn
|
||||
log "...trying $downloadUrl"
|
||||
if curl -o $FORGE_INSTALLER -fsSL $downloadUrl; then
|
||||
break
|
||||
|
||||
@@ -8,12 +8,12 @@ isDebugging && set -x
|
||||
requireVar VANILLA_VERSION
|
||||
: ${MOHIST_BUILD:=lastSuccessfulBuild}
|
||||
|
||||
mohistJobs=https://ci.codemc.io/job/Mohist-Community/job/
|
||||
mohistJobs=https://ci.codemc.io/job/MohistMC/job/
|
||||
mohistJob=${mohistJobs}Mohist-${VANILLA_VERSION}/
|
||||
|
||||
if ! curl -X HEAD -o /dev/null -fsSL "${mohistJob}"; then
|
||||
log "ERROR: mohist builds do not exist for ${VANILLA_VERSION}"
|
||||
log " check https://ci.codemc.io/job/Mohist-Community/ for available versions"
|
||||
log " check https://ci.codemc.io/job/MohistMC/ for available versions"
|
||||
log " and set VERSION accordingly"
|
||||
exit 1
|
||||
fi
|
||||
@@ -26,7 +26,7 @@ buildRelPath=$(
|
||||
baseName=$(basename "${buildRelPath}")
|
||||
if [[ ${baseName} != *-server.jar* ]]; then
|
||||
log "ERROR: mohist build for ${VANILLA_VERSION} is not a valid server jar, found ${baseName}"
|
||||
log " check https://ci.codemc.io/job/Mohist-Community/ for available versions"
|
||||
log " check https://ci.codemc.io/job/MohistMC/ for available versions"
|
||||
log " and set VERSION accordingly"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -6,7 +6,7 @@ IFS=$'\n\t'
|
||||
isDebugging && set -x
|
||||
|
||||
: ${VANILLA_VERSION:?}
|
||||
: ${RELEASE:=stable}
|
||||
: ${RELEASE:=latest}
|
||||
: ${FORCE_REDOWNLOAD:=false}
|
||||
|
||||
requireEnum RELEASE stable latest
|
||||
|
||||
@@ -212,6 +212,11 @@ EOF
|
||||
"${FTB_SERVER_START}"
|
||||
)
|
||||
|
||||
if isTrue ${SETUP_ONLY:=false}; then
|
||||
echo "SETUP_ONLY: ${finalArgs[@]}"
|
||||
exit
|
||||
fi
|
||||
|
||||
if isTrue ${DEBUG_EXEC}; then
|
||||
set -x
|
||||
fi
|
||||
@@ -236,6 +241,11 @@ else
|
||||
"$@" $EXTRA_ARGS
|
||||
)
|
||||
|
||||
if isTrue ${SETUP_ONLY:=false}; then
|
||||
echo "SETUP_ONLY: java ${finalArgs[@]}"
|
||||
exit
|
||||
fi
|
||||
|
||||
if isTrue ${DEBUG_EXEC}; then
|
||||
set -x
|
||||
fi
|
||||
@@ -246,3 +256,4 @@ else
|
||||
exec mc-server-runner ${bootstrapArgs} ${mcServerRunnerArgs} java "${finalArgs[@]}"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -10,6 +10,9 @@ services:
|
||||
restart: "no"
|
||||
build:
|
||||
context: ..
|
||||
args:
|
||||
TARGETOS: linux
|
||||
TARGETARCH: amd64
|
||||
cache_from:
|
||||
- itzg/minecraft-server:latest
|
||||
environment:
|
||||
|
||||
Reference in New Issue
Block a user