Esta es una imagen de Docker que ofrece una selección de servidores proxy de Minecraft, como BungeeCord y Velocity. Está diseñado para usarse en combinación con contenedores de servidor itzg/minecraft.
Cuando se utiliza con la imagen del servidor itzg/minecraft-server, puede desactivar el modo en línea, que es requerido por bungeecord, configurando ONLINE_MODE=FALSE
, como
docker run ... -e ONLINE_MODE=FALSE itzg/minecraft-server
El siguiente es un ejemplo que se puede iniciar con 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 imagen contiene mc-monitor y utiliza su comando status
para verificar continuamente el estado del contenedor. Eso se puede observar en la columna STATUS
de 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
También puede consultar el estado del contenedor de forma compatible con scripts:
> docker container inspect -f "{{.State.Health.Status}}" mc
healthy
TIPO =BUNGEECORD
El tipo de servidor. Cuando el tipo se establece en CUSTOM
, se requiere la configuración del entorno BUNGEE_JAR_URL
.
Valores posibles:
BUNGEECORD
WATERFALL
VELOCITY
CUSTOM
MEMORIA =512m
El tamaño del montón de memoria de Java que se especificará en la JVM. Establecer esto en una cadena vacía permitirá que la JVM calcule el tamaño del montón a partir del límite de memoria declarado del contenedor. Asegúrese de considerar agregar -XX:MaxRAMPercentage=
(con
reemplazado) a JVM_XX_OPTS
, donde el valor predeterminado de JVM es 25%.
ICONO
Al configurar esto en una URL de imagen, se descargará y (si es necesario) se convertirá el ícono a un PNG de 64x64 y se colocará en /server/server-icon.png
.
OVERRIDE_ICON
Anulará cualquier archivo server-icon.png preexistente en el directorio /server si ICON
está configurado.
INIT_MEMORIA =${MEMORIA}
Se puede configurar para utilizar un tamaño de montón inicial diferente.
MAX_MEMORIA =${MEMORIA}
Se puede configurar para utilizar un tamaño de montón máximo diferente.
JVM_OPTS / JVM_XX_OPTS
Opciones adicionales separadas por espacios para pasar a la JVM, donde JVM_XX_OPTS
se agregará a la línea de comandos de Java antes de JVM_OPTS
.
DIRECCIÓN DE RED_CACHE_TTL =60
Número de segundos para almacenar en caché las búsquedas exitosas de direcciones de red. Un valor más bajo es útil cuando los contenedores del servidor de Minecraft se reinician y/o se reprograman y se les reasigna una nueva dirección IP de contenedor.
COMPLEMENTOS
Se utiliza para descargar una lista separada por comas de URL *.jar a la carpeta de complementos.
-e PLUGINS=https://www.example.com/plugin1.jar,https://www.example.com/plugin2.jar
SPIGET_PLUGINS
La variable SPIGET_PLUGINS
se puede configurar con una lista separada por comas de ID de recursos de SpigotMC para descargar automáticamente los complementos de SpigotMC utilizando la API de Spigot. Los recursos que son archivos zip se expandirán al directorio de complementos y los recursos que son simplemente archivos jar se moverán allí.
NOTA: la variable se escribe intencionalmente SPIG E T con una "E"
El ID del recurso se puede ubicar en la parte numérica de la URL después del nombre corto y un punto. Por ejemplo, el ID es 313 de
https://www.spigotmc.org/resources/bungeetablistplus.313/
===
MODRINTH_PROJECTS
Lista separada por comas o nueva línea de slugs (nombre corto) o ID del proyecto. El ID del proyecto se encuentra en la sección "Información técnica". El slug es la parte de la URL de la página que sigue a /mod/
:
https://modrinth.com/mod/fabric-api
----------
|
+-- project slug
Además, se puede declarar una versión/tipo específico utilizando el símbolo de dos puntos y el ID/tipo de versión después del slug del proyecto. La identificación de la versión se puede encontrar en la sección 'Metadatos'. Los tipos de versión válidos son release
, beta
, alpha
.
La resolución de dependencia se puede ajustar configurando MODRINTH_DOWNLOAD_DEPENDENCIES
en none
, optional
o required
(el valor predeterminado).
NOTA La variable MINECRAFT_VERSION
debe configurarse en la versión de Minecraft correspondiente.
ENABLE_RCON
Habilite el servidor rcon (utiliza un complemento de terceros para funcionar).
BUNGEECORD
, WATERFALL
y CUSTOM
VELOCITY
RCON_PORT
Definir el puerto para rcon
RCON_CONTRASEÑA
Definir la contraseña para rcon
BUNGEE_JOB_ID =últimaConstrucciónEstable
El ID de trabajo de Jenkins del artefacto que se descargará y ejecutará y se utiliza al derivar el valor predeterminado de BUNGEE_JAR_URL
BUNGEE_JAR_REVISION
El valor predeterminado es ${BUNGEE_JOB_ID}
, pero se puede establecer en un valor incrementado arbitrariamente para forzar una actualización del archivo jar de BungeeCord descargado.
BUNGEE_BASE_URL
Predeterminado a:
BUNGEECORD
): https://ci.md-5.net/job/BungeeCordWATERFALL
): https://papermc.io/ci/job/Waterfall/ Se utiliza para derivar el valor predeterminado de BUNGEE_JAR_URL
BUNGEE_JAR_URL
Si está configurado, puede especificar una URL personalizada y completa de BungeeCord.jar; sin embargo, no podrá hacer referencia a otras variables de entorno desde una docker run
un archivo de redacción. El valor predeterminado es:
BUNGEECORD
): ${BUNGEE_BASE_URL}/${BUNGEE_JOB_ID}/artifact/bootstrap/target/BungeeCord.jar
Esto tiene prioridad sobre BUNGEE_JAR_FILE
.
BUNGEE_JAR_FILE
Para TYPE=CUSTOM
, permite configurar un JAR BungeeCord personalizado que se encuentra dentro del contenedor.
Debe ser una ruta válida de un archivo existente.
WATERFALL_VERSION =último
Para TYPE=WATERFALL
, permite descargar una secuencia de lanzamiento específica de Waterfall.
WATERFALL_BUILD_ID =último
Para TYPE=WATERFALL
, permite descargar una compilación específica de Waterfall dentro de la versión dada.
VELOCITY_VERSION =último
Para TYPE=VELOCITY
, especifica la versión de Velocity que se descargará y ejecutará.
VELOCITY_BUILD_ID =último
Para TYPE=VELOCITY
, permite descargar una compilación específica de Velocity dentro de la versión dada.
HEALTH_HOST = host local
Permite configurar el host contactado para la verificación del estado del contenedor.
HEALTH_USE_PROXY =falso
Establecer en "verdadero" cuando se utiliza la opción proxy_protocol
de Bungeecord
ENABLE_JMX =falso
Para habilitar JMX remoto, como para crear perfiles con VisualVM o JMC, agregue la variable de entorno ENABLE_JMX=true
, configure JMX_HOST
en la IP/host que ejecuta el contenedor Docker y agregue un reenvío de puerto del puerto TCP 7091.
/servidor
El directorio de trabajo donde se inicia BungeeCord. Este es el directorio donde se cargará su config.yml
.
/complementos
Los complementos se copiarán desde este directorio antes de iniciar el servidor.
/config
El contenido de este directorio se sincronizará en el directorio /server
. Los marcadores de posición variables dentro de los archivos se procesarán como se describe en la sección siguiente, a menos que REPLACE_ENV_DURING_SYNC
esté configurado en "falso".
25577
El puerto de escucha de BungeeCord, que normalmente querrás asignar al puerto estándar del servidor de Minecraft 25565, usa:
-p 25565:25577
La siguiente tabla muestra las versiones de Java y las arquitecturas de CPU admitidas por las etiquetas de imagen:
Etiqueta | Java | Arquitecturas |
---|---|---|
el último | 17 | amd64, arm64, armv7 |
java8 | 8 | amd64, arm64, armv7 |
java11 | 11 | amd64, arm64, armv7 |
RCON está habilitado de forma predeterminada, por lo que puede exec
en el contenedor para acceder a la consola del servidor Bungeecord:
docker exec -i mc rcon-cli
Nota: -i
es necesario para el uso interactivo de rcon-cli.
Para ejecutar un comando simple de una sola vez, como detener un servidor Bungeecord, pase el comando como argumentos a rcon-cli
, como por ejemplo:
docker exec mc rcon-cli en
El -i
no es necesario en este caso.
Para adjuntar e interactuar con el servidor Bungeecord, agregue -it
al iniciar el contenedor, como
docker run -d -it -p 25565:25577 --name mc itzg/mc-proxy
Con eso puedes adjuntar e interactuar en cualquier momento usando
docker attach mc
y luego Control-p Control-q para separar .
Para acceso remoto, configure su demonio Docker para usar un socket tcp
(como -H tcp://0.0.0.0:2375
) y conéctelo desde otra máquina:
docker -H $HOST:2375 attach mc
A menos que esté en una LAN doméstica/privada, debe habilitar el acceso TLS.
Guía de configuración de BungeeCord
Para instalar todo el contenido del servidor (jar, mods, complementos, configuraciones, etc.) desde un archivo zip o tgz, configure GENERIC_PACK
en la ruta del contenedor o URL del archivo comprimido.
Si es necesario aplicar varios paquetes genéricos juntos, configure GENERIC_PACKS
en su lugar, con una lista separada por comas de rutas de archivos comprimidos y/o URL de archivos.
Para evitar repeticiones, cada entrada tendrá el prefijo GENERIC_PACKS_PREFIX
y el sufijo GENERIC_PACKS_SUFFIX
, ambos opcionales. Por ejemplo, las siguientes variables
GENERIC_PACKS=configs-v9.0.1,mods-v4.3.6
GENERIC_PACKS_PREFIX=https://cdn.example.org/
GENERIC_PACKS_SUFFIX=.zip
se expandiría a https://cdn.example.org/configs-v9.0.1.zip,https://cdn.example.org/mods-v4.3.6.zip
.
A veces tienes mods o complementos que requieren información de configuración que solo está disponible en tiempo de ejecución. Por ejemplo, si necesita configurar un complemento para conectarse a una base de datos, no querrá incluir esta información en su repositorio Git o imagen de Docker. O tal vez tenga información sobre el tiempo de ejecución, como el nombre del servidor, que debe configurarse en sus archivos de configuración después de que se inicie el contenedor.
Para esos casos existe la opción de reemplazar las variables definidas dentro de sus configuraciones con variables de entorno definidas en el tiempo de ejecución del contenedor.
Si configura la variable de entorno REPLACE_ENV_VARIABLES
en TRUE
el script de inicio revisará todos los archivos dentro de su volumen /server
y reemplazará las variables que coincidan con las variables de entorno definidas. Las variables que desee reemplazar deben declararse como ${YOUR_VARIABLE}
, lo cual es común en los lenguajes de scripting de shell.
Con REPLACE_ENV_VARIABLE_PREFIX
puede definir un prefijo, donde el valor predeterminado es CFG_
, para que solo coincida con variables de entorno predefinidas.
Si desea utilizar un archivo para un valor (como cuando usa secretos de Docker), puede agregar el sufijo _FILE
al nombre de su variable (en el comando de ejecución). Por ejemplo, ${CFG_PASSWORD_FILE}
se reemplazaría con el contenido del archivo especificado por la variable de entorno CFG_PASSWORD_FILE
.
Aquí hay un ejemplo completo en el que queremos reemplazar valores dentro de una database.yml
.
---
database :
host : ${CFG_DB_HOST}
name : ${CFG_DB_NAME}
password : ${CFG_DB_PASSWORD}
Así es como podría verse su archivo 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
El contenido de db_password
:
ug23u3bg39o-ogADSs
Los parches basados en rutas JSON se pueden aplicar a uno o más archivos existentes estableciendo la variable PATCH_DEFINITIONS
en la ruta de un directorio que contiene uno o más archivos json de definición de parches o un archivo json de conjunto de parches.
Los campos file
y value
de las definiciones de parche pueden contener ${...}
marcadores de posición variables. Las variables de entorno permitidas en los marcadores de posición se pueden restringir configurando REPLACE_ENV_VARIABLE_PREFIX
, cuyo valor predeterminado es "CFG_".
El siguiente ejemplo muestra un archivo de conjunto de parches donde se pueden modificar y agregar varios campos en el archivo de configuración 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 "
}
}
]
}
]
}
Admite los formatos de archivo:
Esta imagen se puede ejecutar como usuario no root, pero requiere un volumen /server
adjunto en el que ese uid pueda escribir, como por ejemplo:
docker run ... -u $uid -v $(pwd)/data:/server itzg/mc-proxy
La latest
etiqueta de imagen se basa en Java 21, pero hay etiquetas de imagen alternativas disponibles para ejecutar con una versión diferente de Java.
La variante de imagen de Java se puede utilizar como se muestra aquí:
itzg/mc-proxy:{variant}
o usando la versión de lanzamiento, como 2024.5.0
itzg/mc-proxy:{release}-{variant}
Variante | Versión Java | tipos de CPU |
---|---|---|
el último | 21 | amd64, brazo64 |
java21 | 21 | amd64, brazo64 |
java17 | 17 | amd64,arm64,armv7 |
java11 | 11 | amd64,arm64,armv7 |
java8 | 8 | amd64,arm64,armv7 |