這是一個 Docker 映像,提供了 Minecraft 代理的選擇,例如 BungeeCord 和 Velocity。它旨在與 itzg/minecraft-server 容器結合使用。
與伺服器鏡像 itzg/minecraft-server 一起使用時,您可以透過設定ONLINE_MODE=FALSE
來停用bungeecord所需的線上模式,例如
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
指令來持續檢查容器的狀態。可以從docker ps
的STATUS
欄位觀察到
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
記憶體=512m
要指定給 JVM 的 Java 記憶體堆大小。將其設為空字串將使 JVM 根據容器聲明的記憶體限制計算堆大小。請務必考慮將-XX:MaxRAMPercentage=
(替換
)新增至JVM_XX_OPTS
,其中 JVM 預設值為 25%。
圖示
將其設為圖像 URL 將下載圖示並將其(如果需要)轉換為 64x64 PNG,並將其放置在/server/server-icon.png
中。
OVERRIDE_ICON
如果設定了ICON
,將覆蓋 /server 目錄中任何預先存在的 server-icon.png 檔案。
INIT_MEMORY =${內存}
可以設定為使用不同的初始堆大小。
最大內存=${內存}
可以設定為使用不同的最大堆大小。
JVM_OPTS / JVM_XX_OPTS
要傳遞到 JVM 的其他空格分隔選項,其中JVM_XX_OPTS
將在JVM_OPTS
之前新增到 java 命令列中。
NETWORKADDRESS_CACHE_TTL =60
快取成功網路位址查找的秒數。當 Minecraft 伺服器容器重新啟動和/或重新安排並重新分配新的容器 IP 位址時,較低的值會很有幫助。
外掛
用於將逗號分隔的 *.jar url 清單下載到外掛程式資料夾。
-e PLUGINS=https://www.example.com/plugin1.jar,https://www.example.com/plugin2.jar
SPIGET_PLUGINS
可以使用逗號分隔的 SpigotMC 資源 ID 清單來設定SPIGET_PLUGINS
變量,以使用 spiget API 自動下載 SpigotMC 外掛程式。 zip 檔案的資源將展開到插件目錄中,而簡單的 jar 檔案的資源將會移動到那裡。
注意:該變數特意拼寫為 SPIG E T,並帶有“E”
資源 ID可以從 URL 的短名稱和點後面的數字部分找到。例如,ID 為313,來自
https://www.spigotmc.org/resources/bungeetablistplus.313/
===
MODRINTH_PROJECTS
逗號或換行符號分隔的項目別名(短名稱)或 ID 清單。項目 ID 位於「技術資訊」部分。 slug 是頁面 URL 中/mod/
後面的部分:
https://modrinth.com/mod/fabric-api
----------
|
+-- project slug
此外,可以在項目 slug 之後使用冒號符號和版本 ID/類型來宣告特定版本/類型。版本 ID 可以在「元資料」部分找到。有效的版本類型有release
、 beta
、 alpha
。
可以透過將MODRINTH_DOWNLOAD_DEPENDENCIES
設定為none
、 optional
或required
(預設值)來調整依賴關係解析。
注意變數MINECRAFT_VERSION
必須設定為對應的 Minecraft 版本。
啟用_RCON
啟用rcon伺服器(使用第三方插件工作)。
BUNGEECORD
、 WATERFALL
和CUSTOM
VELOCITY
RCON_埠
定義rcon的端口
RCON_密碼
定義rcon的密碼
BUNGEE_JOB_ID =lastStableBuild
若要下載和執行的工件的 Jenkins 作業 ID,在派生BUNGEE_JAR_URL
的預設值時使用
BUNGEE_JAR_REVISION
預設為${BUNGEE_JOB_ID}
的值,但可以設定為任意遞增的值以強制升級下載的 BungeeCord jar 檔案。
BUNGEE_BASE_URL
預設為:
BUNGEECORD
):https://ci.md-5.net/job/BungeeCordWATERFALL
):https://papermc.io/ci/job/Waterfall/用於派生BUNGEE_JAR_URL
的預設值
BUNGEE_JAR_URL
如果設置,可以指定 BungeeCord.jar 的自訂、完全限定 URL;但是,您將無法從docker run
compose 檔案中引用其他環境變數。預設為:
BUNGEECORD
): ${BUNGEE_BASE_URL}/${BUNGEE_JOB_ID}/artifact/bootstrap/target/BungeeCord.jar
這優先於BUNGEE_JAR_FILE
。
BUNGEE_JAR_FILE
對於TYPE=CUSTOM
,允許設定位於容器內的自訂 BungeeCord JAR。
必須是現有文件的有效路徑。
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 =假
使用 Bungeecord 的proxy_protocol
選項時設定為“true”
ENABLE_JMX =假
若要啟用遠端 JMX,例如使用 VisualVM 或 JMC 進行分析,請新增環境變數ENABLE_JMX=true
,將JMX_HOST
設定為執行 Docker 容器的 IP/主機,並新增 TCP 連接埠 7091 的連接埠轉送
/伺服器
BungeeCord 啟動的工作目錄。這是將載入其config.yml
目錄。
/插件
在伺服器啟動之前,插件將從此目錄複製。
/配置
該目錄的內容將同步到/server
目錄中。除非REPLACE_ENV_DURING_SYNC
設定為“false”,否則檔案中的變數佔位符將按以下部分所述進行處理。
25577
BungeeCord 的監聽端口,您通常需要使用以下命令將其端口映射到標準 Minecraft 伺服器端口 25565:
-p 25565:25577
下表顯示了鏡像標籤支援的Java版本和CPU架構:
標籤 | 爪哇 | 架構 |
---|---|---|
最新的 | 17 號 | amd64、arm64、armv7 |
java8 | 8 | amd64、arm64、armv7 |
java11 | 11 | amd64、arm64、armv7 |
RCON 預設為啟用狀態,因此您可以在容器中exec
以存取 Bungeecord 伺服器控制台:
docker exec -i mc rcon-cli
注意:互動使用 rcon-cli 需要-i
。
若要執行簡單的一次性命令(例如停止 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
除非您位於家庭/私人 LAN 上,否則應啟用 TLS 存取。
BungeeCord 設定指南
若要從 zip 或 tgz 檔案安裝所有伺服器內容(jar、mod、外掛程式、設定等),然後將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
。
有時,您的 mod 或外掛程式需要僅在運行時可用的配置資訊。例如,如果您需要設定外掛程式來連接到資料庫,您不希望將此資訊包含在 Git 儲存庫或 Docker 映像中。或者,您可能有一些運行時信息,例如容器啟動後需要在設定檔中設定的伺服器名稱。
對於這些情況,可以選擇將配置中定義的變數替換為容器執行時間定義的環境變數。
如果將環境變數REPLACE_ENV_VARIABLES
設定為TRUE
啟動腳本將遍歷/server
磁碟區內的所有檔案並取代與您定義的環境變數相符的變數。您想要替換的變數需要宣告為${YOUR_VARIABLE}
,這在 shell 腳本語言中很常見。
使用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
透過將變數PATCH_DEFINITIONS
設定為包含一個或多個補丁定義 json 檔案或補丁集 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 使用者執行,但需要一個可由該 uid 寫入的附加/server
卷,例如:
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版本 | CPU類型 |
---|---|---|
最新的 | 21 | amd64,arm64 |
java21 | 21 | amd64,arm64 |
java17 | 17 號 | amd64,arm64,armv7 |
java11 | 11 | amd64,arm64,armv7 |
java8 | 8 | amd64,arm64,armv7 |