Сервер Minecraft в Docker Compose: запуск и обновление

Гайды

Пример Docker Compose для Minecraft Java с постоянной папкой мира: запуск, журналы, резервная копия и обновление без случайной смены версии игры.

  • 5 минут чтения
  • 1 просмотр
  • 7 разделов
Моя игра выбрать версию

Запомним в этом браузере и подставим там, где доступна ваша версия. Настройки открытой ссылки важнее этого выбора; отметки версии в вики не меняются.

На странице 7 разделов

Что хранит контейнер, а что — папка сервера

Контейнер удобно пересоздавать при обновлении, а мир и настройки должны переживать это действие. В образе itzg/minecraft-server игровые данные находятся в /data. В примере ниже этот каталог связан с папкой data рядом с compose.yaml.

Пример рассчитан на уже установленный Docker с Compose и отдельный сервер Minecraft Java 1.21.1. Версия выбрана явно: при настройке другого выпуска замените её вместе с подходящим поколением Java. Тег образа latest и значение LATEST для игры могут менять окружение без отдельного решения владельца.

Минимальный compose.yaml

Создайте пустую рабочую папку и положите в неё файл:

services:
  minecraft:
    image: itzg/minecraft-server:java21
    restart: unless-stopped
    ports:
      - "25565:25565"
    environment:
      EULA: "TRUE"
      TYPE: "VANILLA"
      VERSION: "1.21.1"
      MEMORY: "2G"
      ONLINE_MODE: "TRUE"
    volumes:
      - ./data:/data
    stop_grace_period: 1m

EULA: "TRUE" задавайте после прочтения и принятия условий Minecraft. Значение 2G — пример объёма памяти Java, а не обещание вместимости сервера. Оставьте ресурсы для системы и самого контейнера; тяжёлая сборка требует собственного расчёта.

Запуск и первая проверка

В терминале этой папки выполните:

docker compose up -d
docker compose logs -f minecraft

Дождитесь сообщения о завершении запуска. Проверьте подключение клиентом той же версии к localhost:25565, если игра работает на этом компьютере. Для другого устройства используйте адрес хоста. Публичный вход дополнительно зависит от сети и правил доступа к порту.

Команда docker compose ps показывает состояние контейнера. Рабочий контейнер ещё не доказывает готовность игрового сервера: первичная загрузка файлов и генерация мира занимают время. Смотрите журнал до конца, особенно сообщения о версии Java и свободной памяти.

Резервная копия и обновление

Для небольшой компании самый понятный согласованный бэкап — остановить сервер, скопировать всю data, затем запустить его:

docker compose stop minecraft

После завершения остановки сохраните папку data и compose.yaml вне рабочей директории. Только затем выполняйте docker compose start minecraft. Копия должна включать измерения, настройки и файлы игроков, а не один каталог региона.

Обновление сначала проверяйте на копии сервера. Измените VERSION, при необходимости тег Java, выполните docker compose pull и docker compose up -d. Откройте мир и проверьте вход, инвентарь и нужные механики. Понижение версии изменённого мира не является надёжным откатом: для возврата используйте сохранённую копию вместе с прежней конфигурацией.

Где искать причину ошибки

Симптом Проверка
Мир каждый раз новый Правильно ли подключена ./data:/data и из какой папки запущен Compose
Ошибка версии класса Java Соответствует ли тег образа требованиям Minecraft или загрузчика
Сервер доступен локально, но не друзьям Адрес, публикация порта, firewall и сеть провайдера
Настройка возвращается после запуска Не задаётся ли она через переменную окружения образа

Для домашней сети без прямого входящего соединения пригодится руководство по playit.gg. Несколько серверов за одним адресом — отдельная задача для Velocity.

Частые вопросы

Удаление контейнера удалит мир?

При корректном bind mount данные остаются в папке хоста. Перед любым удалением проверьте фактический путь и наличие резервной копии.

Можно ли сменить VANILLA на модпак одной строкой?

Тип запуска — только часть настройки. Нужны совместимые файлы сервера, загрузчик, Java и клиентская сборка. Проверяйте отдельную инструкцию образа для выбранного типа.

Нужен ли порт RCON для обычного подключения?

Нет. В примере публикуется игровой TCP-порт. Административные интерфейсы не следует открывать наружу только ради входа игроков.

Источники

Читайте дальше

Сеть прокси и серверы
5 мин 1

Velocity: настройка сети серверов Minecraft

Как соединить лобби и выживание через Velocity: адреса серверов, modern forwarding, общий секрет и проверка входа без обхода прокси.