This repository builds and publishes Docker images for Minecraft servers. Most changes fall into one of three areas:
- versioned images in
docker/<version>/Dockerfile - shared runtime scripts in
docker/entrypoint.shanddocker/java-jar-launcher.sh - release automation in
.github/workflows/build-docker-server.yml
README.md: user-facing run, volume, and environment-variable docsbuild.sh: local image build helper; can build one tag or all tagsdocker/<tag>/Dockerfile: one image definition per supported server versiondocker/entrypoint.sh: first-start initialization, config symlinks, screen lifecycledocker/java-jar-launcher.sh: JVM launch flags and optional Xvfb setupdocker/ultra-core/: auth/session rewrite template and bundled agent assets
- Keep shared behavior in the common scripts when possible; avoid duplicating logic across Dockerfiles.
- Treat version-specific Dockerfile differences as intentional. If you change one Arclight image, check whether the same change belongs in the other versioned Dockerfiles too.
- When adding or removing a supported version, update all of these together:
docker/<tag>/Dockerfile, the workflow matrix in.github/workflows/build-docker-server.yml, and the supported-version docs inREADME.md. - Preserve the container data layout under
/opt/craftoriounless the user explicitly asks for a breaking change. The mounted directories documented inREADME.mdare part of the external interface. - Preserve existing environment variable names such as
JVM_MEMORY_MAX,JVM_MEMORY_START,MC_AUTH_SERVER, andMC_AUTH_SESSION_SERVERunless the change also includes documentation and migration guidance. - Be careful with startup and shutdown flow in
docker/entrypoint.sh; it handles first-run initialization, config migration intoconfig-server, and graceful stop behavior.
- For docs-only changes, verify the referenced paths, tags, env vars, and commands match the repository.
- For script or Dockerfile changes, prefer targeted verification first by reviewing related files for consistency.
- Full image builds are expensive. Only run Docker builds when the user asks or when verification requires it. If you do, prefer
./build.sh <tag>over building every image.
- This is a small repo; read the relevant files before making broad changes.
- Favor minimal edits that keep README examples, workflow tags, and Docker image contents in sync.