Dies ist ein Docker-Image, das eine Auswahl an Minecraft-Proxys wie BungeeCord und Velocity bereitstellt. Es ist für die Verwendung in Kombination mit itzg/minecraft-server-Containern vorgesehen.
Bei Verwendung mit dem Server-Image itzg/minecraft-server können Sie den für Bungeecord erforderlichen Online-Modus deaktivieren, indem Sie ONLINE_MODE=FALSE
setzen, z. B
docker run ... -e ONLINE_MODE=FALSE itzg/minecraft-server
Das Folgende ist ein Beispiel, das mit docker compose up -d
gestartet werden kann:
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 :
Dieses Image enthält mc-monitor und verwendet seinen status
, um die Container kontinuierlich zu überprüfen. Dies kann aus der STATUS
Spalte von docker ps
beobachtet werden
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
Sie können den Zustand des Containers auch auf skriptfreundliche Weise abfragen:
> docker container inspect -f "{{.State.Health.Status}}" mc
healthy
TYP =BUNGEECORD
Der Typ des Servers. Wenn der Typ auf CUSTOM
festgelegt ist, ist die Umgebungseinstellung BUNGEE_JAR_URL
erforderlich.
Mögliche Werte:
BUNGEECORD
WATERFALL
VELOCITY
CUSTOM
SPEICHER =512m
Die Größe des Java-Speicherheaps, die der JVM angegeben werden soll. Wenn Sie dies auf eine leere Zeichenfolge festlegen, kann die JVM die Heap-Größe anhand des für den Container deklarierten Speicherlimits berechnen. Erwägen Sie unbedingt das Hinzufügen von -XX:MaxRAMPercentage=
(wobei
ersetzt wird) zu JVM_XX_OPTS
, wobei der JVM-Standardwert 25 % beträgt.
SYMBOL
Wenn Sie dies auf eine Bild-URL festlegen, wird das Symbol heruntergeladen und (falls erforderlich) in ein 64x64-PNG konvertiert und in /server/server-icon.png
abgelegt.
OVERRIDE_ICON
Überschreibt alle bereits vorhandenen server-icon.png-Dateien im Verzeichnis /server, wenn ICON
festgelegt ist.
INIT_MEMORY =${MEMORY}
Kann so eingestellt werden, dass eine andere anfängliche Heap-Größe verwendet wird.
MAX_MEMORY =${MEMORY}
Kann so eingestellt werden, dass eine andere maximale Heap-Größe verwendet wird.
JVM_OPTS / JVM_XX_OPTS
Zusätzliche durch Leerzeichen getrennte Optionen zur Übergabe an die JVM, wobei JVM_XX_OPTS
vor JVM_OPTS
zur Java-Befehlszeile hinzugefügt wird.
NETWORKADDRESS_CACHE_TTL =60
Anzahl der Sekunden, die für die erfolgreichen Netzwerkadressensuchen zwischengespeichert werden. Ein niedrigerer Wert ist hilfreich, wenn Minecraft-Servercontainer neu gestartet und/oder neu geplant und eine neue Container-IP-Adresse zugewiesen werden.
Plugins
Wird verwendet, um eine durch Kommas getrennte Liste von *.jar-URLs in den Plugins-Ordner herunterzuladen.
-e PLUGINS=https://www.example.com/plugin1.jar,https://www.example.com/plugin2.jar
SPIGET_PLUGINS
Die Variable SPIGET_PLUGINS
kann mit einer durch Kommas getrennten Liste von SpigotMC-Ressourcen-IDs festgelegt werden, um SpigotMC-Plugins mithilfe der Spiget-API automatisch herunterzuladen. Ressourcen, bei denen es sich um ZIP-Dateien handelt, werden in das Plugins-Verzeichnis erweitert und Ressourcen, bei denen es sich lediglich um JAR-Dateien handelt, werden dorthin verschoben.
HINWEIS: Die Variable wird absichtlich SPIG E T mit einem „E“ geschrieben.
Die Ressourcen-ID kann dem numerischen Teil der URL nach dem Kurznamen und einem Punkt entnommen werden. Die ID lautet beispielsweise 313 von
https://www.spigotmc.org/resources/bungeetablistplus.313/
===
MODRINTH_PROJECTS
Durch Kommas oder Zeilenumbrüche getrennte Liste von Projekt-Slugs (Kurznamen) oder IDs. Die Projekt-ID finden Sie im Bereich „Technische Informationen“. Der Slug ist der Teil der Seiten-URL, der auf /mod/
folgt:
https://modrinth.com/mod/fabric-api
----------
|
+-- project slug
Außerdem kann eine bestimmte Version/ein bestimmter Typ mit dem Doppelpunktsymbol und der Versions-ID/dem Versionstyp nach dem Projekt-Slug deklariert werden. Die Versions-ID finden Sie im Abschnitt „Metadaten“. Gültige Versionstypen sind release
, beta
und alpha
.
Die Abhängigkeitsauflösung kann angepasst werden, indem MODRINTH_DOWNLOAD_DEPENDENCIES
auf none
, optional
oder required
(Standardeinstellung) gesetzt wird.
HINWEIS Die Variable MINECRAFT_VERSION
muss auf die entsprechende Minecraft-Version gesetzt werden.
ENABLE_RCON
Aktivieren Sie den RCON-Server (funktioniert mit einem Drittanbieter-Plugin).
BUNGEECORD
, WATERFALL
und CUSTOM
VELOCITY
RCON_PORT
Definieren Sie den Port für rcon
RCON_PASSWORD
Definieren Sie das Passwort für rcon
BUNGEE_JOB_ID =lastStableBuild
Die Jenkins-Job-ID des herunterzuladenden und auszuführenden Artefakts und wird beim Ableiten des Standardwerts von BUNGEE_JAR_URL
verwendet
BUNGEE_JAR_REVISION
Standardmäßig ist der Wert ${BUNGEE_JOB_ID}
, kann aber auf einen willkürlich erhöhten Wert gesetzt werden, um ein Upgrade der heruntergeladenen BungeeCord-JAR-Datei zu erzwingen.
BUNGEE_BASE_URL
Standardmäßig:
BUNGEECORD
): https://ci.md-5.net/job/BungeeCordWATERFALL
): https://papermc.io/ci/job/Waterfall/ Wird verwendet, um den Standardwert von BUNGEE_JAR_URL
abzuleiten
BUNGEE_JAR_URL
Wenn festgelegt, kann eine benutzerdefinierte, vollständig qualifizierte URL von BungeeCord.jar angegeben werden. Sie können jedoch nicht in einer docker run
Ausführungsdatei auf die anderen Umgebungsvariablen verweisen. Standardmäßig:
BUNGEECORD
): ${BUNGEE_BASE_URL}/${BUNGEE_JOB_ID}/artifact/bootstrap/target/BungeeCord.jar
Dies hat Vorrang vor BUNGEE_JAR_FILE
.
BUNGEE_JAR_FILE
Ermöglicht für TYPE=CUSTOM
das Festlegen einer benutzerdefinierten BungeeCord-JAR, die sich im Container befindet.
Muss ein gültiger Pfad einer vorhandenen Datei sein.
WATERFALL_VERSION =neueste
Ermöglicht für TYPE=WATERFALL
das Herunterladen eines bestimmten Release-Streams von Waterfall.
WATERFALL_BUILD_ID =neueste
Ermöglicht für TYPE=WATERFALL
das Herunterladen eines bestimmten Builds von Waterfall innerhalb der angegebenen Version.
VELOCITY_VERSION =neueste
Gibt für TYPE=VELOCITY
die Version von Velocity an, die heruntergeladen und ausgeführt werden soll.
VELOCITY_BUILD_ID =neueste
Ermöglicht für TYPE=VELOCITY
das Herunterladen eines bestimmten Velocity-Builds innerhalb der angegebenen Version.
HEALTH_HOST =localhost
Ermöglicht die Konfiguration des Hosts, der für die Container-Gesundheitsprüfung kontaktiert wird.
HEALTH_USE_PROXY =false
Wird auf „true“ gesetzt, wenn die Option proxy_protocol
von Bungeecord verwendet wird
ENABLE_JMX =false
Um Remote-JMX zu aktivieren, beispielsweise für die Profilerstellung mit VisualVM oder JMC, fügen Sie die Umgebungsvariable ENABLE_JMX=true
hinzu, setzen Sie JMX_HOST
auf die IP/den Host, auf dem der Docker-Container ausgeführt wird, und fügen Sie eine Portweiterleitung von TCP-Port 7091 hinzu
/Server
Das Arbeitsverzeichnis, in dem BungeeCord gestartet wird. Dies ist das Verzeichnis, in das die Datei config.yml
geladen wird.
/plugins
Plugins werden aus diesem Verzeichnis kopiert, bevor der Server gestartet wird.
/config
Der Inhalt dieses Verzeichnisses wird mit dem Verzeichnis /server
synchronisiert. Variable Platzhalter in den Dateien werden wie im folgenden Abschnitt beschrieben verarbeitet, es sei denn, REPLACE_ENV_DURING_SYNC
ist auf „false“ gesetzt.
25577
Der Abhörport von BungeeCord, den Sie normalerweise dem Standard-Minecraft-Serverport 25565 zuordnen möchten, indem Sie Folgendes verwenden:
-p 25565:25577
Die folgende Tabelle zeigt die von den Image-Tags unterstützten Java-Versionen und CPU-Architekturen:
Etikett | Java | Architekturen |
---|---|---|
letzte | 17 | amd64, arm64, armv7 |
java8 | 8 | amd64, arm64, armv7 |
java11 | 11 | amd64, arm64, armv7 |
RCON ist standardmäßig aktiviert, sodass Sie in den Container exec
können, um auf die Bungeecord-Serverkonsole zuzugreifen:
docker exec -i mc rcon-cli
Hinweis: Das -i
ist für die interaktive Nutzung von rcon-cli erforderlich.
Um einen einfachen, einmaligen Befehl auszuführen, z. B. das Stoppen eines Bungeecord-Servers, übergeben Sie den Befehl als Argumente an rcon-cli
, z. B.:
docker exec mc rcon-cli en
Das -i
wird in diesem Fall nicht benötigt.
Um eine Verbindung zum Bungeecord-Server herzustellen und mit ihm zu interagieren, fügen Sie beim Starten des Containers -it
hinzu, z
docker run -d -it -p 25565:25577 --name mc itzg/mc-proxy
Damit können Sie jederzeit eine Verbindung herstellen und interagieren
docker attach mc
und dann Strg-p Strg-q zum Trennen .
Für den Fernzugriff konfigurieren Sie Ihren Docker-Daemon so, dass er einen tcp
Socket verwendet (z. B. -H tcp://0.0.0.0:2375
) und eine Verbindung von einem anderen Computer her herstellt:
docker -H $HOST:2375 attach mc
Sofern Sie sich nicht in einem Heim-/privaten LAN befinden, sollten Sie den TLS-Zugriff aktivieren.
BungeeCord-Konfigurationshandbuch
Um den gesamten Serverinhalt (JARS, Mods, Plugins, Konfigurationen usw.) aus einer ZIP- oder TGZ-Datei zu installieren, legen Sie GENERIC_PACK
auf den Containerpfad oder die URL der Archivdatei fest.
Wenn mehrere generische Pakete zusammen angewendet werden müssen, legen Sie stattdessen GENERIC_PACKS
fest, mit einer durch Kommas getrennten Liste von Archivdateipfaden und/oder URLs zu Dateien.
Um Wiederholungen zu vermeiden, wird jedem Eintrag der Wert von GENERIC_PACKS_PREFIX
vorangestellt und der Wert von GENERIC_PACKS_SUFFIX
als Suffix hinzugefügt. Beide Werte sind optional. Zum Beispiel die folgenden Variablen
GENERIC_PACKS=configs-v9.0.1,mods-v4.3.6
GENERIC_PACKS_PREFIX=https://cdn.example.org/
GENERIC_PACKS_SUFFIX=.zip
würde zu https://cdn.example.org/configs-v9.0.1.zip,https://cdn.example.org/mods-v4.3.6.zip
erweitert werden.
Manchmal gibt es Mods oder Plugins, die Konfigurationsinformationen erfordern, die nur zur Laufzeit verfügbar sind. Wenn Sie beispielsweise ein Plugin für die Verbindung mit einer Datenbank konfigurieren müssen, möchten Sie diese Informationen nicht in Ihr Git-Repository oder Docker-Image aufnehmen. Oder vielleicht verfügen Sie über Laufzeitinformationen wie den Servernamen, der nach dem Start des Containers in Ihren Konfigurationsdateien festgelegt werden muss.
Für diese Fälle besteht die Möglichkeit, definierte Variablen in Ihren Konfigurationen durch Umgebungsvariablen zu ersetzen, die zur Containerlaufzeit definiert werden.
Wenn Sie die Umgebungsvariable REPLACE_ENV_VARIABLES
auf TRUE
setzen, durchsucht das Startskript alle Dateien in Ihrem /server
Volume und ersetzt Variablen, die Ihren definierten Umgebungsvariablen entsprechen. Variablen, die Sie ersetzen möchten, müssen als ${YOUR_VARIABLE}
deklariert werden, was bei Shell-Skriptsprachen üblich ist.
Mit REPLACE_ENV_VARIABLE_PREFIX
können Sie ein Präfix definieren, wobei der Standardwert CFG_
ist, um nur mit vordefinierten Umgebungsvariablen übereinzustimmen.
Wenn Sie eine Datei für einen Wert verwenden möchten (z. B. bei der Verwendung von Docker-Geheimnissen), können Sie Ihrem Variablennamen das Suffix _FILE
hinzufügen (im Ausführungsbefehl). Beispielsweise würde ${CFG_PASSWORD_FILE}
durch den Inhalt der Datei ersetzt, die durch die Umgebungsvariable CFG_PASSWORD_FILE
angegeben wird.
Hier ist ein vollständiges Beispiel, in dem wir Werte in einer database.yml
ersetzen möchten.
---
database :
host : ${CFG_DB_HOST}
name : ${CFG_DB_NAME}
password : ${CFG_DB_PASSWORD}
So könnte Ihre docker-compose.yml
Datei aussehen:
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
Der Inhalt von db_password
:
ug23u3bg39o-ogADSs
JSON-Pfad-basierte Patches können auf eine oder mehrere vorhandene Dateien angewendet werden, indem die Variable PATCH_DEFINITIONS
auf den Pfad eines Verzeichnisses gesetzt wird, das eine oder mehrere Patch-Definitions-JSON-Dateien oder eine Patch-Set-JSON-Datei enthält.
Die file
und value
der Patch-Definitionen können ${...}
Variablenplatzhalter enthalten. Die zulässigen Umgebungsvariablen in Platzhaltern können durch die Einstellung REPLACE_ENV_VARIABLE_PREFIX
eingeschränkt werden, deren Standardwert „CFG_“ ist.
Das folgende Beispiel zeigt eine Patch-Set-Datei, in der verschiedene Felder in der Konfigurationsdatei paper.yaml
geändert und hinzugefügt werden können:
{
"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 "
}
}
]
}
]
}
Unterstützt die Dateiformate:
Dieses Image kann als Nicht-Root-Benutzer ausgeführt werden, erfordert jedoch ein angeschlossenes /server
Volume, das mit dieser UID beschreibbar ist, wie zum Beispiel:
docker run ... -u $uid -v $(pwd)/data:/server itzg/mc-proxy
Das latest
Image-Tag basiert auf Java 21, es sind jedoch alternative Image-Tags für die Ausführung mit einer anderen Java-Version verfügbar.
Die Bild-Java-Variante kann wie hier gezeigt verwendet werden:
itzg/mc-proxy:{variant}
oder verwenden Sie eine Release-Version, z. B. 2024.5.0
itzg/mc-proxy:{release}-{variant}
Variante | Java-Version | CPU-Typen |
---|---|---|
letzte | 21 | amd64,arm64 |
java21 | 21 | amd64,arm64 |
java17 | 17 | amd64,arm64,armv7 |
java11 | 11 | amd64,arm64,armv7 |
java8 | 8 | amd64,arm64,armv7 |