mirror of
https://github.com/itzg/docker-minecraft-server.git
synced 2026-02-18 15:36:22 +00:00
87 lines
3.4 KiB
Markdown
87 lines
3.4 KiB
Markdown
## Adding a server type
|
|
|
|
Adding a new server `TYPE` can vary due to the complexity of obtaining and configuring each type; however, the addition of any server type includes at least the following steps:
|
|
|
|
1. Copy an existing "start-deploy*" script, such as [start-deployFabric](https://github.com/itzg/docker-minecraft-server/blob/master/scripts/start-deployFabric) and rename it accordingly making sure to retain the "start-deploy" prefix
|
|
2. Modify the type-specific behavior between the "start-utils" preamble and the hand-off to `start-setupWorld` at the end of the script
|
|
3. Develop and test the changes using the [iterative process described below](#iterative-script-development)
|
|
4. Add a case-entry to the `case "${TYPE^^}"` in [start-configuration](https://github.com/itzg/docker-minecraft-server/blob/master/scripts/start-configuration)
|
|
5. Add a section to the [docs](https://github.com/itzg/docker-minecraft-server/tree/master/docs). It is recommended to copy-modify an existing section to retain a similar wording and level of detail
|
|
6. [Submit a pull request](https://github.com/itzg/docker-minecraft-server/pulls)
|
|
|
|
## Iterative script development
|
|
|
|
The included `compose-dev.yml` will mount the local `scripts` code into the container and allow for iterative development. Replace `[-e key=value]` with any environment variables you wish to set for testing the modified scripts.
|
|
|
|
```shell
|
|
docker compose -f compose-dev.yml run --rm -it [-e key=value] mc-dev
|
|
```
|
|
|
|
!!! tip
|
|
|
|
To speed up the development cycle, it is recommended to set `SETUP_ONLY` to `true` as part of the run command above.
|
|
|
|
## 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:
|
|
|
|
```shell
|
|
./gradlew installDist
|
|
```
|
|
|
|
The distribution will be installed in the project's `build/install/mc-image-helper`. Obtain the absolute path to that directory use in the next step.
|
|
|
|
Refer to the instructions above to mount any locally modified image scripts or build a local copy of the image using or with alternate `BASE_IMAGE`, as described above:
|
|
|
|
```shell
|
|
docker build -t itzg/minecraft-server .
|
|
```
|
|
|
|
Mount the local mc-image-helper distribution directory as a volume in the container at the path `/usr/share/mc-image-helper`, such as
|
|
|
|
```shell
|
|
docker run -it --rm \
|
|
-v /path/to/mc-image-helper/build/install/mc-image-helper:/usr/share/mc-image-helper \
|
|
-e EULA=true \
|
|
itzg/minecraft-server
|
|
```
|
|
|
|
In a compose file, include the volume mount in the `volumes` section of the container definition:
|
|
|
|
```yaml
|
|
services:
|
|
mc:
|
|
# ... usual container definition
|
|
volumes:
|
|
- /path/to/mc-image-helper/build/install/mc-image-helper:/usr/share/mc-image-helper:ro
|
|
```
|
|
|
|
For Go base tools, run
|
|
|
|
```shell
|
|
goreleaser release --snapshot --clean
|
|
```
|
|
|
|
Clone [itzg/github-releases-proxy](https://github.com/itzg/github-releases-proxy) and run it according to the instructions shown there.
|
|
|
|
In the Docker build, configure the following
|
|
|
|
```shell
|
|
--build-arg GITHUB_BASEURL=http://host.docker.internal:8080 \
|
|
--build-arg APPS_REV=1
|
|
```
|
|
|
|
and declare one or more version overrides, such as
|
|
|
|
```
|
|
--build-arg MC_HELPER_VERSION=1.8.1-SNAPSHOT
|
|
```
|
|
|
|
## Generating release notes
|
|
|
|
The following git command can be used to provide the bulk of release notes content:
|
|
|
|
```shell script
|
|
git log --invert-grep --grep "^ci:" --grep "^misc:" --grep "^docs:" --pretty="* %s" 1.1.0..1.2.0
|
|
```
|