这是一个 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 。
可能的值:
BUNGEECORDWATERFALLVELOCITYCUSTOM内存=512m
要指定给 JVM 的 Java 内存堆大小。将其设置为空字符串将使 JVM 根据容器声明的内存限制计算堆大小。请务必考虑将-XX:MaxRAMPercentage=<n> (替换<n> )添加到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和CUSTOMVELOCITYRCON_端口
定义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 |