Это образ 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
.
Возможные значения:
BUNGEECORD
WATERFALL
VELOCITY
CUSTOM
ПАМЯТЬ =512м
Размер кучи памяти Java, указываемый JVM. Установка пустой строки позволит JVM рассчитать размер кучи на основе объявленного контейнером ограничения памяти. Обязательно рассмотрите возможность добавления -XX:MaxRAMPercentage=
(с заменой
) в 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
и CUSTOM
VELOCITY
RCON_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
в этом случае не нужен.
Чтобы подключиться к серверу Bungeecord и взаимодействовать с ним, добавьте -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 |