/minecraft-fig

Minecraft server, map generator, and map web server orchestrated with Docker Compose (formerly Fig).

Primary LanguageShellMIT LicenseMIT

minecraft-fig

Minecraft server, map generator, and map web server orchestrated with docker-compose (formerly fig). Directly inspired by Michael Crosby's Advanced Docker Volumes blog post.

First-time usage:

docker-compose run --rm -e UID=$(id -u) -e GID=$(id -g) build_spigot

The UID and GID are optional. If specified, the output spigot.jar will be owned by the given user and group.

Normal usage:

docker-compose up -d map game    # once
docker-compose up -d mapcrafter  # periodically

Run the mapcrafter container periodically (perhaps in a loop or with a cron job) to ensure that the map is kept up to date.

The Minecraft server is hosted on port 25565, and the map web server on 80, although these can be changed in docker-compose.yml.

Custom Server Settings

The default settings are stored in volumes/game/settings-default/. You can either change these directly, or override any of these settings files in volumes/game/settings-custom/.

I like to keep my custom settings in a private repo, which I can then clone to settings-custom.

Sync with Dropbox

Two services are provided to sync your world data with Dropbox. But first some initial setup is required:

$ curl -o dropbox_uploader.sh \
       "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh"
$ bash dropbox_uploader.sh
# ...follow the configuration steps...
$ mv ~/.dropbox_uploader volumes/dropbox/
$ rm dropbox_uploader.sh  # no longer required!

Now it's as simple as:

$ docker-compose run --rm load_world_data_from_dropbox
# - or -
$ docker-compose run --rm save_world_data_to_dropbox