Esta é uma imagem Docker que oferece uma escolha de proxies do Minecraft, como BungeeCord e Velocity. Ele deve ser usado em combinação com contêineres itzg/minecraft-server.
Ao usar com a imagem do servidor itzg/minecraft-server você pode desabilitar o modo online, que é exigido pelo bungeecord, configurando ONLINE_MODE=FALSE
, como
docker run ... -e ONLINE_MODE=FALSE itzg/minecraft-server
A seguir está um exemplo que pode ser iniciado com 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 :
Esta imagem contém mc-monitor e usa seu comando status
para verificar continuamente o contêiner. Isso pode ser observado na coluna STATUS
do 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
Você também pode consultar a integridade do contêiner de maneira amigável ao script:
> docker container inspect -f "{{.State.Health.Status}}" mc
healthy
TIPO =BUNGEECORD
O tipo do servidor. Quando o tipo é definido como CUSTOM
, a configuração de ambiente BUNGEE_JAR_URL
é necessária.
Valores possíveis:
BUNGEECORD
WATERFALL
VELOCITY
CUSTOM
MEMÓRIA =512m
O tamanho de heap de memória Java a ser especificado para a JVM. Definir isso como uma string vazia permitirá que a JVM calcule o tamanho do heap a partir do limite de memória declarado do contêiner. Certifique-se de considerar adicionar -XX:MaxRAMPercentage=
(com
substituído) a JVM_XX_OPTS
, onde o padrão da JVM é 25%.
ÍCONE
Definir isso como um URL de imagem fará o download e (se necessário) converterá o ícone em um PNG 64x64 e o colocará em /server/server-icon.png
.
OVERRIDE_ICON
Substituirá qualquer arquivo server-icon.png pré-existente no diretório /server se ICON
estiver definido.
INIT_MEMORY =${MEMÓRIA}
Pode ser configurado para usar um tamanho de heap inicial diferente.
MAX_MEMORY =${MEMÓRIA}
Pode ser configurado para usar um tamanho máximo de heap diferente.
JVM_OPTS / JVM_XX_OPTS
Opções adicionais separadas por espaço para passar para a JVM, onde JVM_XX_OPTS
será adicionado à linha de comando java antes de JVM_OPTS
.
NETWORKADDRESS_CACHE_TTL =60
Número de segundos para armazenar em cache as pesquisas de endereço de rede bem-sucedidas. Um valor mais baixo é útil quando os contêineres do servidor Minecraft são reiniciados e/ou reprogramados e reatribuídos a um novo endereço IP do contêiner.
PLUGINS
Usado para baixar uma lista separada por vírgulas de URLs *.jar para a pasta de plug-ins.
-e PLUGINS=https://www.example.com/plugin1.jar,https://www.example.com/plugin2.jar
SPIGET_PLUGINS
A variável SPIGET_PLUGINS
pode ser definida com uma lista separada por vírgulas de IDs de recursos do SpigotMC para baixar automaticamente os plug-ins do SpigotMC usando a API do SpigotMC. Os recursos que são arquivos zip serão expandidos para o diretório de plug-ins e os recursos que são simplesmente arquivos jar serão movidos para lá.
NOTA: a variável é escrita propositalmente SPIG E T com um "E"
O ID do recurso pode ser localizado na parte numérica do URL após o nome abreviado e um ponto. Por exemplo, o ID é 313 de
https://www.spigotmc.org/resources/bungeetablistplus.313/
===
MODRINTH_PROJECTS
Lista separada por vírgula ou nova linha de slugs de projeto (nome abreviado) ou IDs. O ID do projeto está localizado na seção "Informações técnicas". O slug é a parte do URL da página que segue /mod/
:
https://modrinth.com/mod/fabric-api
----------
|
+-- project slug
Além disso, uma versão/tipo específico pode ser declarado usando o símbolo de dois pontos e o ID/tipo da versão após o slug do projeto. O ID da versão pode ser encontrado na seção ‘Metadados’. Os tipos de versão válidos são release
, beta
, alpha
.
A resolução de dependência pode ser ajustada definindo MODRINTH_DOWNLOAD_DEPENDENCIES
como none
, optional
ou required
(o padrão).
NOTA A variável MINECRAFT_VERSION
deve ser definida para a versão correspondente do Minecraft.
ENABLE_RCON
Habilite o servidor rcon (usa um plugin de terceiros para funcionar).
BUNGEECORD
, WATERFALL
e CUSTOM
VELOCITY
RCON_PORT
Defina a porta para rcon
RCON_SENHA
Defina a senha para rcon
BUNGEE_JOB_ID =últimoStableBuild
O ID do trabalho Jenkins do artefato a ser baixado e executado e é usado ao derivar o valor padrão de BUNGEE_JAR_URL
BUNGEE_JAR_REVISION
O valor padrão é ${BUNGEE_JOB_ID}
, mas pode ser definido como um valor incrementado arbitrariamente para forçar uma atualização do arquivo jar do BungeeCord baixado.
BUNGEE_BASE_URL
Padrão para:
BUNGEECORD
): https://ci.md-5.net/job/BungeeCordWATERFALL
): https://papermc.io/ci/job/Waterfall/ Usado para derivar o valor padrão de BUNGEE_JAR_URL
BUNGEE_JAR_URL
Se definido, pode especificar uma URL personalizada e totalmente qualificada do BungeeCord.jar; no entanto, você não poderá fazer referência a outras variáveis de ambiente de dentro de uma docker run
um arquivo de composição. O padrão é:
BUNGEECORD
): ${BUNGEE_BASE_URL}/${BUNGEE_JOB_ID}/artifact/bootstrap/target/BungeeCord.jar
Isso tem precedência sobre BUNGEE_JAR_FILE
.
BUNGEE_JAR_FILE
Para TYPE=CUSTOM
, permite definir um JAR BungeeCord personalizado que está localizado dentro do contêiner.
Deve ser um caminho válido de um arquivo existente.
WATERFALL_VERSION =mais recente
Para TYPE=WATERFALL
, permite baixar um fluxo de lançamento específico do Waterfall.
WATERFALL_BUILD_ID =mais recente
Para TYPE=WATERFALL
, permite baixar uma compilação específica do Waterfall dentro da versão fornecida.
VELOCITY_VERSION =mais recente
Para TYPE=VELOCITY
, especifica a versão do Velocity para download e execução.
VELOCITY_BUILD_ID =mais recente
Para TYPE=VELOCITY
, permite baixar uma compilação específica do Velocity dentro da versão fornecida.
HEALTH_HOST =localhost
Permite configurar o host contatado para verificação de integridade do contêiner.
HEALTH_USE_PROXY =falso
Defina como "true" ao usar a opção proxy_protocol
do Bungeecord
ENABLE_JMX =falso
Para habilitar o JMX remoto, como para criação de perfil com VisualVM ou JMC, adicione a variável de ambiente ENABLE_JMX=true
, defina JMX_HOST
como o IP/host executando o contêiner Docker e adicione um encaminhamento de porta da porta TCP 7091
/servidor
O diretório de trabalho onde o BungeeCord é iniciado. Este é o diretório onde seu config.yml
será carregado.
/plugins
Os plug-ins serão copiados deste diretório antes que o servidor seja iniciado.
/config
O conteúdo deste diretório será sincronizado no diretório /server
. Os espaços reservados para variáveis dentro dos arquivos serão processados conforme descrito na seção abaixo, a menos que REPLACE_ENV_DURING_SYNC
esteja definido como "false".
25577
A porta de escuta do BungeeCord, que você normalmente deseja portar, mapeia para a porta padrão do servidor Minecraft 25565 usando:
-p 25565:25577
A tabela a seguir mostra as versões Java e arquiteturas de CPU suportadas pelas tags de imagem:
Marcação | Java | Arquiteturas |
---|---|---|
mais recente | 17 | amd64, arm64, armv7 |
java8 | 8 | amd64, arm64, armv7 |
java11 | 11 | amd64, arm64, armv7 |
O RCON está habilitado por padrão, então você pode exec
no contêiner para acessar o console do servidor Bungeecord:
docker exec -i mc rcon-cli
Nota: O -i
é necessário para uso interativo do rcon-cli.
Para executar um comando simples e único, como parar um servidor Bungeecord, passe o comando como argumentos para rcon-cli
, como:
docker exec mc rcon-cli en
O -i
não é necessário neste caso.
Para conectar e interagir com o servidor Bungeecord, adicione -it
ao iniciar o contêiner, como
docker run -d -it -p 25565:25577 --name mc itzg/mc-proxy
Com isso você pode anexar e interagir a qualquer momento usando
docker attach mc
e então Control-p Control-q para desanexar .
Para acesso remoto, configure seu daemon Docker para usar um soquete tcp
(como -H tcp://0.0.0.0:2375
) e conecte-se de outra máquina:
docker -H $HOST:2375 attach mc
A menos que você esteja em uma LAN doméstica/privada, você deve habilitar o acesso TLS.
Guia de configuração do BungeeCord
Para instalar todo o conteúdo do servidor (jars, mods, plugins, configurações, etc.) de um arquivo zip ou tgz, defina GENERIC_PACK
para o caminho do contêiner ou URL do arquivo compactado.
Se vários pacotes genéricos precisarem ser aplicados juntos, defina GENERIC_PACKS
, com uma lista separada por vírgulas de caminhos de arquivos compactados e/ou URLs para arquivos.
Para evitar repetição, cada entrada será prefixada pelo valor de GENERIC_PACKS_PREFIX
e sufixada pelo valor de GENERIC_PACKS_SUFFIX
, ambos opcionais. Por exemplo, as seguintes variáveis
GENERIC_PACKS=configs-v9.0.1,mods-v4.3.6
GENERIC_PACKS_PREFIX=https://cdn.example.org/
GENERIC_PACKS_SUFFIX=.zip
expandiria para https://cdn.example.org/configs-v9.0.1.zip,https://cdn.example.org/mods-v4.3.6.zip
.
Às vezes você tem mods ou plugins que exigem informações de configuração que só estão disponíveis em tempo de execução. Por exemplo, se você precisar configurar um plugin para se conectar a um banco de dados, você não deseja incluir essas informações em seu repositório Git ou imagem Docker. Ou talvez você tenha algumas informações de tempo de execução, como o nome do servidor, que precisam ser definidas em seus arquivos de configuração após o início do contêiner.
Para esses casos, existe a opção de substituir variáveis definidas dentro de suas configurações por variáveis de ambiente definidas em tempo de execução do contêiner.
Se você definir a variável de ambiente REPLACE_ENV_VARIABLES
como TRUE
o script de inicialização percorrerá todos os arquivos dentro do volume /server
e substituirá as variáveis que correspondem às variáveis de ambiente definidas. As variáveis que você deseja substituir precisam ser declaradas como ${YOUR_VARIABLE}
, o que é comum em linguagens de script de shell.
Com REPLACE_ENV_VARIABLE_PREFIX
você pode definir um prefixo, onde o padrão é CFG_
, para corresponder apenas a variáveis de ambiente predefinidas.
Se quiser usar um arquivo para um valor (como ao usar segredos do Docker), você pode adicionar o sufixo _FILE
ao nome da sua variável (no comando run). Por exemplo, ${CFG_PASSWORD_FILE}
seria substituído pelo conteúdo do arquivo especificado pela variável de ambiente CFG_PASSWORD_FILE
.
Aqui está um exemplo completo onde queremos substituir valores dentro de um database.yml
.
---
database :
host : ${CFG_DB_HOST}
name : ${CFG_DB_NAME}
password : ${CFG_DB_PASSWORD}
Esta é a aparência do seu arquivo 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
O conteúdo de db_password
:
ug23u3bg39o-ogADSs
Os patches baseados em caminho JSON podem ser aplicados a um ou mais arquivos existentes definindo a variável PATCH_DEFINITIONS
como o caminho de um diretório que contém um ou mais arquivos json de definição de patch ou um arquivo json de conjunto de patches.
Os campos file
e value
das definições de patch podem conter espaços reservados para variáveis ${...}
. As variáveis de ambiente permitidas em espaços reservados podem ser restringidas definindo REPLACE_ENV_VARIABLE_PREFIX
, cujo padrão é "CFG_".
O exemplo a seguir mostra um arquivo de conjunto de patches onde vários campos no arquivo de configuração paper.yaml
podem ser modificados e adicionados:
{
"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 "
}
}
]
}
]
}
Suporta os formatos de arquivo:
Esta imagem pode ser executada como um usuário não root, mas requer um volume /server
anexado que possa ser gravado por esse uid, como:
docker run ... -u $uid -v $(pwd)/data:/server itzg/mc-proxy
A tag de imagem latest
é baseada em Java 21, mas tags de imagem alternativas estão disponíveis para execução com uma versão Java diferente.
A variante Java da imagem pode ser usada conforme mostrado aqui:
itzg/mc-proxy:{variant}
ou usando a versão de lançamento, como 2024.5.0
itzg/mc-proxy:{release}-{variant}
Variante | Versão Java | Tipos de CPU |
---|---|---|
mais recente | 21 | amd64,arm64 |
java21 | 21 | amd64,arm64 |
java17 | 17 | amd64,arm64,armv7 |
java11 | 11 | amd64,arm64,armv7 |
java8 | 8 | amd64,arm64,armv7 |