Это образ Docker, который предоставляет выбор прокси-серверов Minecraft, таких как BungeeCord и Velocity. Он предназначен для использования в сочетании с контейнерами itzg/minecraft-server.
При использовании образа сервера itzg/minecraft-server вы можете отключить онлайн-режим, который требуется для Bungeecord, установив ONLINE_MODE=FALSE , например:
docker run ... -e ONLINE_MODE=FALSE itzg/minecraft-server Ниже приведен пример, который можно запустить с помощью docker compose up -d :
services :
mc :
image : itzg/minecraft-server
environment :
EULA : " TRUE "
ONLINE_MODE : " FALSE "
volumes :
- mc-data:/data
proxy :
image : itzg/mc-proxy
environment :
BUNGEE_JAR_REVISION : " 1 "
CFG_MOTD : Powered by Docker
REPLACE_ENV_VARIABLES : " true "
ports :
- " 25565:25577 "
volumes :
- ./config.yml:/config/config.yml
- proxy-data:/server
volumes :
mc-data :
proxy-data : Этот образ содержит mc-monitor и использует его команду status для постоянной проверки состояния контейнера. Это можно наблюдать в столбце STATUS в docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b418af073764 mc "/usr/bin/run-bungeecord.sh" 43 seconds ago Up 41 seconds (healthy) 0.0.0.0:25577->25577/tcp mc
Вы также можете запросить состояние контейнера удобным для сценария способом:
> docker container inspect -f "{{.State.Health.Status}}" mc
healthy
ТИП = БУНДЖЕКОРД
Тип сервера. Если для типа установлено значение CUSTOM , требуется настройка среды BUNGEE_JAR_URL .
Возможные значения:
BUNGEECORDWATERFALLVELOCITYCUSTOMПАМЯТЬ =512м
Размер кучи памяти Java, указываемый JVM. Установка пустой строки позволит JVM рассчитать размер кучи на основе объявленного контейнером ограничения памяти. Обязательно рассмотрите возможность добавления -XX:MaxRAMPercentage=<n> (с заменой <n> ) в JVM_XX_OPTS , где значение по умолчанию для JVM составляет 25%.
ИКОНА
Если указать URL-адрес изображения, значок будет загружен и (при необходимости) преобразован в PNG размером 64x64 и помещен в /server/server-icon.png .
OVERRIDE_ICON
Будет переопределять любой ранее существовавший файл server-icon.png в каталоге /server, если установлен ICON .
INIT_MEMORY =${MEMORY}
Можно настроить использование другого начального размера кучи.
MAX_MEMORY =${MEMORY}
Можно настроить использование другого максимального размера кучи.
JVM_OPTS / JVM_XX_OPTS
Дополнительные параметры, разделенные пробелами, для передачи в JVM, где JVM_XX_OPTS будет добавлен в командную строку Java перед JVM_OPTS .
NETWORKADDRESS_CACHE_TTL =60
Количество секунд для кэширования успешных поисков сетевых адресов. Меньшее значение полезно, когда контейнеры сервера Minecraft перезапускаются и/или перепланируются и переназначаются новому IP-адресу контейнера.
ПЛАГИНЫ
Используется для загрузки списка URL-адресов *.jar, разделенных запятыми, в папку плагинов.
-e PLUGINS=https://www.example.com/plugin1.jar,https://www.example.com/plugin2.jar
SPIGET_PLUGINS
В переменную SPIGET_PLUGINS можно установить список идентификаторов ресурсов SpigotMC, разделенных запятыми, для автоматической загрузки плагинов SpigotMC с помощью API spiget. Ресурсы, представляющие собой zip-файлы, будут расширены в каталог плагинов, а ресурсы, представляющие собой просто файлы jar, будут перемещены туда.
ПРИМЕЧАНИЕ. переменная намеренно написана SPIG E T с буквой «E».
Идентификатор ресурса можно найти в числовой части URL-адреса после короткого имени и точки. Например, идентификатор 313 из
https://www.spigotmc.org/resources/bungeetablistplus.313/
===
MODRINTH_PROJECTS
Список номеров проектов (короткое имя) или идентификаторов, разделенных запятыми или новой строкой. Идентификатор проекта находится в разделе «Техническая информация». Слаг — это часть URL-адреса страницы, следующая за /mod/ :
https://modrinth.com/mod/fabric-api
----------
|
+-- project slug
Кроме того, конкретную версию/тип можно объявить с помощью символа двоеточия и идентификатора/типа версии после фрагмента проекта. Идентификатор версии можно найти в разделе «Метаданные». Допустимые типы версий: release , beta , alpha .
Разрешение зависимостей можно настроить, установив для MODRINTH_DOWNLOAD_DEPENDENCIES значение none , optional или required (по умолчанию).
ПРИМЕЧАНИЕ. В переменной MINECRAFT_VERSION должна быть установлена соответствующая версия Minecraft.
ENABLE_RCON
Включите сервер rcon (для работы используется сторонний плагин).
BUNGEECORD , WATERFALL и CUSTOMVELOCITYRCON_PORT
Определите порт для rcon
RCON_ПАРОЛЬ
Определите пароль для rcon
BUNGEE_JOB_ID =lastStableBuild
Идентификатор задания Jenkins артефакта для загрузки и запуска, который используется при получении значения по умолчанию BUNGEE_JAR_URL
BUNGEE_JAR_REVISION
По умолчанию используется значение ${BUNGEE_JOB_ID} , но может быть установлено произвольно увеличенное значение, чтобы принудительно обновить загруженный jar-файл BungeeCord.
BUNGEE_BASE_URL
По умолчанию:
BUNGEECORD ): https://ci.md-5.net/job/BungeeCordWATERFALL ): https://papermc.io/ci/job/Waterfall/ Используется для получения значения по умолчанию BUNGEE_JAR_URL
BUNGEE_JAR_URL
Если установлено, можно указать собственный полный URL-адрес BungeeCord.jar; однако вы не сможете ссылаться на другие переменные среды из docker run файл создания. По умолчанию:
BUNGEECORD ): ${BUNGEE_BASE_URL}/${BUNGEE_JOB_ID}/artifact/bootstrap/target/BungeeCord.jar Это имеет приоритет над BUNGEE_JAR_FILE .
BUNGEE_JAR_FILE
Для TYPE=CUSTOM позволяет установить собственный JAR-файл BungeeCord, расположенный внутри контейнера.
Должен быть действительный путь к существующему файлу.
WATERFALL_VERSION = последняя версия
Для TYPE=WATERFALL позволяет загрузить конкретный поток выпуска Waterfall.
WATERFALL_BUILD_ID = последний
Для TYPE=WATERFALL позволяет загрузить конкретную сборку Waterfall в пределах данной версии.
VELOCITY_VERSION = последняя версия
Для TYPE=VELOCITY указывает версию Velocity для загрузки и запуска.
VELOCITY_BUILD_ID = последний
Для TYPE=VELOCITY позволяет загрузить конкретную сборку Velocity в пределах данной версии.
HEALTH_HOST = локальный хост
Позволяет настроить хост, с которым осуществляется проверка работоспособности контейнера.
HEALTH_USE_PROXY = ложь
Установите значение «true» при использовании опции proxy_protocol в Bungeecord.
ENABLE_JMX = ложь
Чтобы включить удаленный JMX, например, для профилирования с помощью VisualVM или JMC, добавьте переменную среды ENABLE_JMX=true , установите для JMX_HOST IP-адрес/хост, на котором работает контейнер Docker, и добавьте переадресацию TCP-порта 7091.
/сервер
Рабочий каталог, в котором запускается BungeeCord. Это каталог, в который будет загружен его config.yml .
/плагины
Плагины будут скопированы из этого каталога перед запуском сервера.
/конфигурация
Содержимое этого каталога будет синхронизировано с каталогом /server . Заполнители переменных в файлах будут обрабатываться, как описано в разделе ниже, если для REPLACE_ENV_DURING_SYNC не установлено значение «false».
25577
Порт прослушивания BungeeCord, который вы обычно хотите перенести, сопоставляется со стандартным портом сервера Minecraft 25565, используя:
-p 25565:25577
В следующей таблице показаны версии Java и архитектуры ЦП, поддерживаемые тегами изображений:
| Ярлык | Ява | Архитектуры |
|---|---|---|
| последний | 17 | AMD64, Arm64, Armv7 |
| Java8 | 8 | AMD64, Arm64, Armv7 |
| java11 | 11 | AMD64, Arm64, Armv7 |
RCON включен по умолчанию, поэтому вы можете exec контейнер для доступа к консоли сервера Bungeecord:
docker exec -i mc rcon-cli
Примечание. Ключ -i необходим для интерактивного использования rcon-cli.
Чтобы выполнить простую одноразовую команду, например остановку сервера Bungeecord, передайте команду в качестве аргументов в rcon-cli , например:
docker exec mc rcon-cli en
-i в этом случае не нужен.
Чтобы подключиться к серверу Bungecord и взаимодействовать с ним, добавьте -it при запуске контейнера, например:
docker run -d -it -p 25565:25577 --name mc itzg/mc-proxy
Благодаря этому вы можете подключаться и взаимодействовать в любое время, используя
docker attach mc
а затем Control-p Control-q, чтобы отсоединить .
Для удаленного доступа настройте демон Docker на использование сокета tcp (например, -H tcp://0.0.0.0:2375 ) и подключитесь с другого компьютера:
docker -H $HOST:2375 attach mc
Если вы не находитесь в домашней/частной локальной сети, вам следует включить доступ TLS.
Руководство по настройке BungeeCord
Чтобы установить все содержимое сервера (jars, моды, плагины, конфигурации и т. д.) из файла zip или tgz, затем установите GENERIC_PACK путь к контейнеру или URL-адрес файла архива.
Если необходимо применять несколько универсальных пакетов вместе, вместо этого установите GENERIC_PACKS с разделенным запятыми списком путей к архивным файлам и/или URL-адресов файлов.
Чтобы избежать повторения, каждая запись будет иметь префикс значения GENERIC_PACKS_PREFIX и суффикс значения GENERIC_PACKS_SUFFIX , оба из которых являются необязательными. Например, следующие переменные
GENERIC_PACKS=configs-v9.0.1,mods-v4.3.6
GENERIC_PACKS_PREFIX=https://cdn.example.org/
GENERIC_PACKS_SUFFIX=.zip
расширится до https://cdn.example.org/configs-v9.0.1.zip,https://cdn.example.org/mods-v4.3.6.zip .
Иногда у вас есть моды или плагины, которым требуется информация о конфигурации, доступная только во время выполнения. Например, если вам нужно настроить плагин для подключения к базе данных, вы не хотите включать эту информацию в свой репозиторий Git или образ Docker. Или, может быть, у вас есть некоторая информация о времени выполнения, например имя сервера, которую необходимо указать в файлах конфигурации после запуска контейнера.
В таких случаях есть возможность заменить определенные переменные внутри ваших конфигураций переменными среды, определенными во время выполнения контейнера.
Если вы установите для переменной среды REPLACE_ENV_VARIABLES значение TRUE сценарий запуска просмотрит все файлы внутри тома /server и заменит переменные, соответствующие определенным вами переменным среды. Переменные, которые вы хотите заменить, должны быть объявлены как ${YOUR_VARIABLE} , что характерно для языков сценариев оболочки.
С помощью REPLACE_ENV_VARIABLE_PREFIX вы можете определить префикс (по умолчанию — CFG_ ), который будет соответствовать только предопределенным переменным среды.
Если вы хотите использовать файл в качестве значения (например, при использовании секретов Docker), вы можете добавить суффикс _FILE к имени переменной (в команде запуска). Например, ${CFG_PASSWORD_FILE} будет заменен содержимым файла, указанного переменной среды CFG_PASSWORD_FILE .
Вот полный пример, в котором мы хотим заменить значения внутри файла database.yml .
---
database :
host : ${CFG_DB_HOST}
name : ${CFG_DB_NAME}
password : ${CFG_DB_PASSWORD} Вот как может выглядеть ваш файл docker-compose.yml :
version : " 3.8 "
# Other docker-compose examples in /examples
services :
proxy :
image : itzg/mc-proxy
ports :
- " 25577:25577 "
volumes :
- " proxy:/server "
environment :
# enable env variable replacement
REPLACE_ENV_VARIABLES : " TRUE "
# define an optional prefix for your env variables you want to replace
ENV_VARIABLE_PREFIX : " CFG_ "
# and here are the actual variables
CFG_DB_HOST : " http://localhost:3306 "
CFG_DB_NAME : " minecraft "
CFG_DB_PASSWORD_FILE : " /run/secrets/db_password "
restart : always
volumes :
proxy :
secrets :
db_password :
file : ./db_password Содержимое db_password :
ug23u3bg39o-ogADSs
Исправления на основе пути JSON можно применить к одному или нескольким существующим файлам, задав для переменной PATCH_DEFINITIONS путь к каталогу, который содержит один или несколько файлов JSON определения исправлений или файл JSON набора исправлений.
Поля file и value определений исправлений могут содержать заполнители переменных ${...} . Разрешенные переменные среды в заполнителях можно ограничить, установив REPLACE_ENV_VARIABLE_PREFIX , который по умолчанию имеет значение «CFG_».
В следующем примере показан файл набора исправлений, в котором можно изменять и добавлять различные поля в файле конфигурации paper.yaml :
{
"patches" : [
{
"file" : " /data/paper.yml " ,
"ops" : [
{
"$set" : {
"path" : " $.verbose " ,
"value" : true
}
},
{
"$set" : {
"path" : " $.settings['velocity-support'].enabled " ,
"value" : " ${CFG_VELOCITY_ENABLED} " ,
"value-type" : " bool "
}
},
{
"$put" : {
"path" : " $.settings " ,
"key" : " my-test-setting " ,
"value" : " testing "
}
}
]
}
]
}Поддерживает форматы файлов:
Этот образ можно запустить от имени пользователя без полномочий root, но для этого требуется подключенный том /server , доступный для записи с этим uid, например:
docker run ... -u $uid -v $(pwd)/data:/server itzg/mc-proxy
latest тег изображения основан на Java 21, но доступны альтернативные теги изображения для работы с другой версией Java.
Вариант изображения Java можно использовать, как показано здесь:
itzg/mc-proxy:{variant}
или используя версию выпуска, например 2024.5.0
itzg/mc-proxy:{release}-{variant}
| Вариант | Java-версия | Типы процессоров |
|---|---|---|
| последний | 21 | amd64,arm64 |
| java21 | 21 | amd64,arm64 |
| java17 | 17 | amd64,arm64,armv7 |
| java11 | 11 | amd64,arm64,armv7 |
| Java8 | 8 | amd64,arm64,armv7 |