Go to file
Kris Lamoureux 3a943e9397
Rewrite README for clarity and accuracy
- Simplify build steps in README
- Add `make configure` for custom builds
- Recommend using `make paper` for PaperMC server setup
- Advise tagging images for private repository
- Highlight the importance of managing your own compose files
2024-05-24 20:52:03 -04:00
builds/basic Add build configuration system and paper image 2024-05-24 03:15:54 -04:00
dockerfiles Add build configuration system and paper image 2024-05-24 03:15:54 -04:00
scratch Add build configuration system and paper image 2024-05-24 03:15:54 -04:00
.gitignore Add build configuration system and paper image 2024-05-24 03:15:54 -04:00
docker-compose.build.yml Add build configuration system and paper image 2024-05-24 03:15:54 -04:00
docker-compose.yml Add build configuration system and paper image 2024-05-24 03:15:54 -04:00
entrypoint.sh Handle SIGTERM to stop Minecraft gracefully 2024-05-15 03:22:34 -04:00
LICENSE Download and verify server.jar hash 2024-05-09 04:25:35 -04:00
Makefile Add build configuration system and paper image 2024-05-24 03:15:54 -04:00
README.md Rewrite README for clarity and accuracy 2024-05-24 20:52:03 -04:00

Minecraft Container Image

Quick Start

Assume a clean repository (i.e., without .env and plugins.json in the top directory), and Docker cache. You can use make clean to clear specific default images and prune the unused build cache. However, you'll still need to inspect all containers and images to ensure you've removed them all.

  • make clean only removes certain images and prunes the builder cache.

Steps

  1. Configure your build:

    make configure
    

    This defaults to make configure BUILD=basic, but if you have directories in ./scratch, you can specify those build names here. Repository-included builds are in./builds, but it's advised to copy ./builds/basic or whichever build configuration you are basing off and copy it into ./scratch/X to control your settings apart from the repository. This separation allows you to manage your configurations independently and avoid overwriting repository defaults.

  2. Build the PaperMC server:

    make paper
    

    This builds the PaperMC server, which is likely what you want unless you prefer a 100% vanilla server experience. PaperMC is recommended for its performance benefits and support for Bukkit API server mods. Both EssentialsX and WorldGuard suggest using Paper for better performance and stability.

  3. (Optional) Install for testing:

    make install
    

    This runs docker compose up -d and brings up a minecraft-minecraft-1 network/container compose stack using the .env and plugins.json in the root of the repository. It includes settings for image overrides, the EULA agreement, and a DEBUG option for the custom entrypoint.sh script, Java options (defaulting to -Xms1G -Xmx2G), and the ability to set any server.properties file entry using the SETTINGS_ prefix in the compose file. The purpose of make install is for testing only, and it is advised not to rely on it for managing an actual server deployment. You will likely want to add other settings not specified in the docker-compose.yml and manage your own compose files.

Additional Notes

Image Management

All images are tagged with localhost/minecraft, etc. It's acceptable not to override these default image names and just tag your own versions after building the localhost images. The images will include git hash information for extra traceability.

After using the quick start, you'll get something like this:

$ docker image ls
REPOSITORY                TAG            IMAGE ID       CREATED          SIZE
localhost/minecraft       1.20.1-paper   814edda474c4   9 seconds ago    568MB
localhost/minecraft-jre   latest         50350d8d3947   30 seconds ago   379MB

It is advisable to tag your own images and push them to a private container repository, as you'll want to avoid pushing these images to a public DockerHub repository due to the Minecraft EULA with typical proprietary software non-redistribution rules.

docker tag localhost/minecraft:1.20.1-paper example.org/minecraft:1.20.1-paper
docker push example.org/minecraft:1.20.1-paper

License

This project is licensed under the GPLv3 License. See the LICENSE file for details.