Il s'agit d'une image Docker qui offre un choix de proxys Minecraft, tels que BungeeCord et Velocity. Il est destiné à être utilisé en combinaison avec les conteneurs itzg/minecraft-server.
Lors de l'utilisation avec l'image du serveur itzg/minecraft-server, vous pouvez désactiver le mode en ligne, requis par bungeecord, en définissant ONLINE_MODE=FALSE
, tel que
docker run ... -e ONLINE_MODE=FALSE itzg/minecraft-server
Voici un exemple qui peut être démarré avec 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 :
Cette image contient mc-monitor et utilise sa commande status
pour vérifier en permanence celui du conteneur. Cela peut être observé dans la colonne STATUS
du 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
Vous pouvez également interroger l'état du conteneur à l'aide d'un script :
> docker container inspect -f "{{.State.Health.Status}}" mc
healthy
TYPE = CORDE ÉLASTIQUE
Le type du serveur. Lorsque le type est défini sur CUSTOM
, le paramètre d'environnement BUNGEE_JAR_URL
est requis.
Valeurs possibles :
BUNGEECORD
WATERFALL
VELOCITY
CUSTOM
MÉMOIRE =512m
Taille du tas de mémoire Java à spécifier à la JVM. Définir ceci sur une chaîne vide permettra à la JVM de calculer la taille du tas à partir de la limite de mémoire déclarée par le conteneur. Assurez-vous d'envisager d'ajouter -XX:MaxRAMPercentage=
(avec
remplacé) à JVM_XX_OPTS
, où la valeur par défaut de la JVM est de 25 %.
ICÔNE
Définir cela sur une URL d'image téléchargera et (si nécessaire) convertira l'icône en PNG 64x64 et la placera dans /server/server-icon.png
.
OVERRIDE_ICON
Remplacera tout fichier server-icon.png préexistant dans le répertoire /server si ICON
est défini.
INIT_MEMORY =${MÉMOIRE}
Peut être configuré pour utiliser une taille de tas initiale différente.
MAX_MEMORY =${MÉMOIRE}
Peut être configuré pour utiliser une taille de segment maximale différente.
JVM_OPTS / JVM_XX_OPTS
Options supplémentaires séparées par des espaces à transmettre à la JVM, où JVM_XX_OPTS
sera ajouté à la ligne de commande Java avant JVM_OPTS
.
ADRESSE RÉSEAU_CACHE_TTL =60
Nombre de secondes nécessaires pour mettre en cache les recherches d'adresses réseau réussies. Une valeur inférieure est utile lorsque les conteneurs du serveur Minecraft sont redémarrés et/ou reprogrammés et réaffectés à une nouvelle adresse IP de conteneur.
PLUGINS
Utilisé pour télécharger une liste d'URL *.jar séparées par des virgules dans le dossier des plugins.
-e PLUGINS=https://www.example.com/plugin1.jar,https://www.example.com/plugin2.jar
SPIGET_PLUGINS
La variable SPIGET_PLUGINS
peut être définie avec une liste d'ID de ressources SpigotMC séparés par des virgules pour télécharger automatiquement les plugins SpigotMC à l'aide de l'API spiget. Les ressources qui sont des fichiers zip seront développées dans le répertoire des plugins et les ressources qui sont simplement des fichiers jar y seront déplacées.
REMARQUE : la variable est volontairement orthographiée SPIG E T avec un "E"
L' ID de la ressource peut être localisé à partir de la partie numérique de l'URL après le nom abrégé et un point. Par exemple, l'ID est 313 de
https://www.spigotmc.org/resources/bungeetablistplus.313/
===
MODRINTH_PROJETS
Liste de slugs de projet (nom court) ou d'identifiants séparés par des virgules ou des nouvelles lignes. L'ID du projet se trouve dans la section "Informations techniques". Le slug est la partie de l'URL de la page qui suit /mod/
:
https://modrinth.com/mod/fabric-api
----------
|
+-- project slug
En outre, une version/un type spécifique peut être déclaré à l'aide du symbole deux-points et de l'identifiant/du type de version après le slug du projet. L'identifiant de version peut être trouvé dans la section « Métadonnées ». Les types de versions valides sont release
, beta
, alpha
.
La résolution des dépendances peut être ajustée en définissant MODRINTH_DOWNLOAD_DEPENDENCIES
sur none
, optional
ou required
(valeur par défaut).
REMARQUE La variable MINECRAFT_VERSION
doit être définie sur la version Minecraft correspondante.
ENABLE_RCON
Activez le serveur rcon (utilise un plugin tiers pour fonctionner).
BUNGEECORD
, WATERFALL
et CUSTOM
VELOCITY
RCON_PORT
Définir le port pour rcon
RCON_PASSWORD
Définir le mot de passe pour rcon
BUNGEE_JOB_ID =dernièreStableBuild
L'ID de tâche Jenkins de l'artefact à télécharger et à exécuter et est utilisé lors de la dérivation de la valeur par défaut de BUNGEE_JAR_URL
BUNGEE_JAR_REVISION
La valeur par défaut est ${BUNGEE_JOB_ID}
, mais peut être définie sur une valeur arbitrairement incrémentée pour forcer une mise à niveau du fichier jar BungeeCord téléchargé.
BUNGEE_BASE_URL
Par défaut :
BUNGEECORD
) : https://ci.md-5.net/job/BungeeCordWATERFALL
) : https://papermc.io/ci/job/Waterfall/ Utilisé pour dériver la valeur par défaut de BUNGEE_JAR_URL
BUNGEE_JAR_URL
S'il est défini, peut spécifier une URL personnalisée et complète du BungeeCord.jar ; cependant, vous ne pourrez pas référencer les autres variables d'environnement à partir d'un docker run
un fichier de composition. La valeur par défaut est :
BUNGEECORD
) : ${BUNGEE_BASE_URL}/${BUNGEE_JOB_ID}/artifact/bootstrap/target/BungeeCord.jar
Ceci est prioritaire sur BUNGEE_JAR_FILE
.
BUNGEE_JAR_FILE
Pour TYPE=CUSTOM
, permet de définir un JAR BungeeCord personnalisé situé à l'intérieur du conteneur.
Doit être un chemin valide d'un fichier existant.
WATERFALL_VERSION =dernière
Pour TYPE=WATERFALL
, permet de télécharger un flux de version spécifique de Waterfall.
WATERFALL_BUILD_ID =dernier
Pour TYPE=WATERFALL
, permet de télécharger une version spécifique de Waterfall dans la version donnée.
VELOCITY_VERSION =dernière
Pour TYPE=VELOCITY
, spécifie la version de Velocity à télécharger et à exécuter.
VELOCITY_BUILD_ID =dernier
Pour TYPE=VELOCITY
, permet de télécharger une version spécifique de Velocity dans la version donnée.
HEALTH_HOST =hôte local
Permet de configurer l'hôte contacté pour la vérification de l'état du conteneur.
HEALTH_USE_PROXY = faux
Défini sur "true" lors de l'utilisation de l'option proxy_protocol
de Bungeecord
ENABLE_JMX = faux
Pour activer JMX distant, par exemple pour le profilage avec VisualVM ou JMC, ajoutez la variable d'environnement ENABLE_JMX=true
, définissez JMX_HOST
sur l'adresse IP/l'hôte exécutant le conteneur Docker et ajoutez une redirection de port du port TCP 7091.
/serveur
Le répertoire de travail dans lequel BungeeCord est démarré. C'est le répertoire où son config.yml
sera chargé.
/plugins
Les plugins seront copiés depuis ce répertoire avant le démarrage du serveur.
/config
Le contenu de ce répertoire sera synchronisé dans le répertoire /server
. Les espaces réservés variables dans les fichiers seront traités comme décrit dans la section ci-dessous, sauf si REPLACE_ENV_DURING_SYNC
est défini sur « false ».
25577
Le port d'écoute de BungeeCord, que vous souhaiterez généralement porter, est mappé vers le port standard du serveur Minecraft 25565 en utilisant :
-p 25565:25577
Le tableau suivant présente les versions Java et les architectures de processeur prises en charge par les balises d'image :
Étiqueter | Java | Architectures |
---|---|---|
dernier | 17 | amd64, arm64, armv7 |
java8 | 8 | amd64, arm64, armv7 |
java11 | 11 | amd64, arm64, armv7 |
RCON est activé par défaut, vous pouvez donc exec
dans le conteneur pour accéder à la console du serveur Bungeecord :
docker exec -i mc rcon-cli
Remarque : le -i
est requis pour une utilisation interactive de rcon-cli.
Pour exécuter une commande simple et ponctuelle, telle que l'arrêt d'un serveur Bungeecord, transmettez la commande comme arguments à rcon-cli
, par exemple :
docker exec mc rcon-cli en
Le -i
n'est pas nécessaire dans ce cas.
Afin de vous connecter et d'interagir avec le serveur Bungeecord, ajoutez -it
lors du démarrage du conteneur, tel que
docker run -d -it -p 25565:25577 --name mc itzg/mc-proxy
Avec cela, vous pouvez vous connecter et interagir à tout moment en utilisant
docker attach mc
puis Control-p Control-q pour détacher .
Pour un accès à distance, configurez votre démon Docker pour utiliser un socket tcp
(tel que -H tcp://0.0.0.0:2375
) et connectez-le depuis une autre machine :
docker -H $HOST:2375 attach mc
Sauf si vous êtes sur un réseau local domestique/privé, vous devez activer l'accès TLS.
Guide de configuration du cordon élastique
Pour installer tout le contenu du serveur (jars, mods, plugins, configurations, etc.) à partir d'un fichier zip ou tgz, définissez ensuite GENERIC_PACK
sur le chemin du conteneur ou l'URL du fichier d'archive.
Si plusieurs packs génériques doivent être appliqués ensemble, définissez plutôt GENERIC_PACKS
, avec une liste de chemins d'accès aux fichiers d'archive et/ou d'URL d'accès aux fichiers séparés par des virgules.
Pour éviter les répétitions, chaque entrée sera préfixée par la valeur de GENERIC_PACKS_PREFIX
et suffixée par la valeur de GENERIC_PACKS_SUFFIX
, les deux étant facultatifs. Par exemple, les variables suivantes
GENERIC_PACKS=configs-v9.0.1,mods-v4.3.6
GENERIC_PACKS_PREFIX=https://cdn.example.org/
GENERIC_PACKS_SUFFIX=.zip
s'étendrait à https://cdn.example.org/configs-v9.0.1.zip,https://cdn.example.org/mods-v4.3.6.zip
.
Parfois, vous disposez de mods ou de plugins qui nécessitent des informations de configuration qui ne sont disponibles qu'au moment de l'exécution. Par exemple, si vous devez configurer un plugin pour vous connecter à une base de données, vous ne souhaitez pas inclure ces informations dans votre référentiel Git ou votre image Docker. Ou peut-être avez-vous des informations d'exécution telles que le nom du serveur qui doivent être définies dans vos fichiers de configuration après le démarrage du conteneur.
Dans ces cas, il existe la possibilité de remplacer les variables définies dans vos configurations par des variables d'environnement définies lors de l'exécution du conteneur.
Si vous définissez la variable d'environnement REPLACE_ENV_VARIABLES
sur TRUE
le script de démarrage parcourra tous les fichiers de votre volume /server
et remplacera les variables qui correspondent à vos variables d'environnement définies. Les variables que vous souhaitez remplacer doivent être déclarées sous la forme ${YOUR_VARIABLE}
, ce qui est courant dans les langages de script shell.
Avec REPLACE_ENV_VARIABLE_PREFIX
vous pouvez définir un préfixe, où la valeur par défaut est CFG_
, pour correspondre uniquement aux variables d'environnement prédéfinies.
Si vous souhaitez utiliser un fichier pour une valeur (comme lors de l'utilisation de secrets Docker), vous pouvez ajouter le suffixe _FILE
au nom de votre variable (dans la commande d'exécution). Par exemple, ${CFG_PASSWORD_FILE}
serait remplacé par le contenu du fichier spécifié par la variable d'environnement CFG_PASSWORD_FILE
.
Voici un exemple complet où nous souhaitons remplacer des valeurs dans un database.yml
.
---
database :
host : ${CFG_DB_HOST}
name : ${CFG_DB_NAME}
password : ${CFG_DB_PASSWORD}
Voici à quoi pourrait ressembler votre fichier 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
Le contenu de db_password
:
ug23u3bg39o-ogADSs
Les correctifs basés sur le chemin JSON peuvent être appliqués à un ou plusieurs fichiers existants en définissant la variable PATCH_DEFINITIONS
sur le chemin d'un répertoire contenant un ou plusieurs fichiers JSON de définition de correctif ou un fichier JSON d'ensemble de correctifs.
Les champs file
et value
des définitions de correctifs peuvent contenir des espaces réservés de variable ${...}
. Les variables d'environnement autorisées dans les espaces réservés peuvent être restreintes en définissant REPLACE_ENV_VARIABLE_PREFIX
, qui est par défaut "CFG_".
L'exemple suivant montre un fichier d'ensemble de correctifs dans lequel divers champs du fichier de configuration paper.yaml
peuvent être modifiés et ajoutés :
{
"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 "
}
}
]
}
]
}
Prend en charge les formats de fichiers :
Cette image peut être exécutée en tant qu'utilisateur non root, mais nécessite un volume /server
attaché qui est accessible en écriture par cet UID, tel que :
docker run ... -u $uid -v $(pwd)/data:/server itzg/mc-proxy
La latest
balise d'image est basée sur Java 21, mais d'autres balises d'image sont disponibles pour être exécutées avec une version Java différente.
La variante image Java peut être utilisée comme indiqué ici :
itzg/mc-proxy:{variant}
ou en utilisant la version release, telle que 2024.5.0
itzg/mc-proxy:{release}-{variant}
Variante | Version Java | Types de processeurs |
---|---|---|
dernier | 21 | amd64, bras64 |
java21 | 21 | amd64, bras64 |
java17 | 17 | amd64,arm64,armv7 |
java11 | 11 | amd64,arm64,armv7 |
java8 | 8 | amd64,arm64,armv7 |