Easy to use and clean Docker image for running Paper Spigot servers in Docker containers using OpenJDK.
You may also be interested in waterfall-docker if you want to build a whole server network.
The easiest way for a quick start would be:
docker run -it \
    -p 25565:25565 \
    -v ~/minecraft/config:/opt/minecraft/config \
    -v ~/minecraft/worlds:/opt/minecraft/worlds \
    -v ~/minecraft/plugins:/opt/minecraft/plugins \
    -v ~/minecraft/data:/opt/minecraft/data \
    -v ~/minecraft/logs:/opt/minecraft/logs \
    felixklauke/paperspigot:1.16.5The Docker images are tagged for their Minecraft versions. These versions are currently available:
- felixklauke/paperspigot:1.16.5
- felixklauke/paperspigot:1.16.4
- felixklauke/paperspigot:1.16.3
- felixklauke/paperspigot:1.16.2
- felixklauke/paperspigot:1.16.1
- felixklauke/paperspigot:1.15.2
- felixklauke/paperspigot:1.15.1
- felixklauke/paperspigot:1.15
- felixklauke/paperspigot:1.14.4
- felixklauke/paperspigot:1.14.3
- felixklauke/paperspigot:1.14.2
- felixklauke/paperspigot:1.14.1
- felixklauke/paperspigot:1.14
- felixklauke/paperspigot:1.13.2
- felixklauke/paperspigot:1.13.1
- felixklauke/paperspigot:1.13
- felixklauke/paperspigot:1.12.2
- felixklauke/paperspigot:1.12.1
- felixklauke/paperspigot:1.12
- felixklauke/paperspigot:1.11.2
- felixklauke/paperspigot:1.10.2
- felixklauke/paperspigot:1.9.4
- felixklauke/paperspigot:1.8.8
The specific images are updated by hand. The 1.x-latest images will update at nightly builds and will always use the latest build.
There are five volumes which are used for:
- Worlds
- Plugins
- Config files (paper.yml, bukkit.yml, spigot.yml, server.properties, commands.yml)
- Data (banned-ips.json, banned-players.json, help.yml, ops.json, permissions.yml, whitelist.json)
- Logs
You can find the mount locations in docker-compose.yml.
This method is recommended if you have an already existing server which you wish to run inside a container due to the way bind mounts behave. You can add this simple entry to your docker-compose.yml when using bind mounts:
version: '3.7'
services:
  minecraft:
    image: felixklauke/paperspigot:1.16.5
    container_name: minecraft
    stdin_open: true
    tty: true
    restart: always
    networks:
      - minecraft
    ports:
      - 25565:25565
    volumes:
      - ./config:/opt/minecraft/config
      - ./worlds:/opt/minecraft/worlds
      - ./plugins:/opt/minecraft/plugins
      - ./data:/opt/minecraft/data
      - ./logs:/opt/minecraft/logs
networks:
  minecraft: {}
If you want to use explicit volumes, you can use this:
version: '3.7'
services:
  minecraft:
    image: felixklauke/paperspigot:1.16.5
    container_name: minecraft
    stdin_open: true
    tty: true
    restart: always
    networks:
      - minecraft
    ports:
      - 25565:25565
    volumes:
      - minecraft-config:/opt/minecraft/config
      - minecraft-worlds:/opt/minecraft/worlds
      - minecraft-plugins:/opt/minecraft/plugins
      - minecraft-data:/opt/minecraft/data
      - minecraft-logs:/opt/minecraft/logs
volumes:
  minecraft-config: {}
  minecraft-worlds: {}
  minecraft-plugins: {}
  minecraft-data: {}
  minecraft-logs: {}
networks:
  minecraft: {}
- Docker CLI Reference: docker cp - Copy files/folders between a container and the local filesystem. Useful if you want to add new plugins, change settings, etc.
- Docker CLI Reference: docker attach - Attach to a running container. Will attach to the server's console directly, allowing you to issue commands.