
在 docker-minecraft-server 中运行 Bukkit/Spigot 服务端完整配置指南【免费下载链接】docker-minecraft-serverDocker image that provides a Minecraft Server for Java Edition that automatically installs/upgrades versions, modloaders, modpacks and more at startup项目地址: https://gitcode.com/GitHub_Trending/do/docker-minecraft-server导读本文讲解如何在 docker-minecraft-server 镜像中通过TYPE环境变量运行 Bukkit 或 Spigot 服务端涵盖 jar 自动下载与损坏重下、BUKKIT_DOWNLOAD_URL/SPIGOT_DOWNLOAD_URL自定义下载源、BUILD_FROM_SOURCE从源码构建以及 Canyon、Poseidon、Uberbukkit 等 CraftBukkit 分支的配置。读完本文你将能独立部署并排障一个 Bukkit/Spigot 系的容器化服务器并理解镜像内部如何完成服务端类型解析与下载。为什么文档建议优先考虑 Paper在开始配置前需要了解一个重要背景文档开头 明确指出getbukkit.org 下载站点已不再支持自动化下载。镜像的默认下载逻辑见 scripts/start-deployBukkitSpigot 中的downloadSpigot函数依赖https://getbukkit.org/download/页面解析直链一旦站点不可用或改版自动下载就会失败。因此强烈建议切换为 PaperPaper 与 Bukkit/Spigot 插件完全兼容Paper 官方提供稳定的自动下载 API镜像对其支持活跃维护对应TYPEPAPER的独立部署脚本 start-deployPaper若你仍必须使用 Bukkit/Spigot可继续阅读下文但需注意下载源可用性风险。一、通过 TYPE 选择 Bukkit/Spigot 服务端设置环境变量TYPE为BUKKIT或SPIGOT即可运行对应服务端命令行方式docker run ... -e TYPESPIGOT ...Compose 方式services: mc: image: itzg/minecraft-server environment: EULA: TRUE TYPE: SPIGOT # 或 TYPE: BUKKIT在镜像内部这一选择由 scripts/start-configuration 的类型分发逻辑处理*BUKKIT|SPIGOT大小写不敏感统一进入 scripts/start-deployBukkitSpigot 执行下载与部署。说明BUKKIT与SPIGOT走的是同一部署脚本仅在 jar 匹配名CraftBukkit vs Spigot上分支部署完成后脚本会把FAMILY统一归一为SPIGOT后续插件安装等操作全部按 Spigot 体系处理见 scripts/start-deployBukkitSpigot#L133-L137。版本号命名陷阱Spigot 下载站点的VERSION命名并不总是直观必须点进版本条目查看精确版本号。例如仅写1.8是不行的下载命名要求精确到1.8-R0.1-SNAPSHOT-latest这种完整格式。否则下载 URL 会拼出不存在文件名脚本会打印类似下面的错误并退出ERROR: failed to download from url Visit https://getbukkit.org/download/flavor to lookup the exact version or see if download site is unavailable. Click into the version entry to find the **exact** version.错误信息见 scripts/start-deployBukkitSpigot#L99-L106。当VERSIONLATEST时脚本会先解析站点最新版直链其余情况默认拼接https://cdn.getbukkit.org/flavor/flavor-VERSION.jarscripts/start-deployBukkitSpigot#L84-L93。二、jar 损坏与 FORCE_REDOWNLOAD 强制重下容器启动时会复用/data数据目录中已有的服务端 jar。如果下载的 jar 已损坏例如下载被中断、文件不完整导致启动失败可设置environment: TYPE: SPIGOT FORCE_REDOWNLOAD: true下次容器启动会强制重新下载。成功重下后请将该变量改回false或直接删除避免每次启动都重复下载。底层判断逻辑位于 scripts/start-deployBukkitSpigot#L123-L131只有BUILD_SPIGOT_FROM_SOURCE/BUILD_FROM_SOURCE未开启时走下载分支且if [ ! -f $SERVER ] || isTrue $FORCE_REDOWNLOAD控制重下条件。三、自定义下载源BUKKIT_DOWNLOAD_URL / SPIGOT_DOWNLOAD_URL如果你自建镜像仓库、内网代理或持有自己的 Bukkit/Spigot jar可用以下变量覆盖默认下载地址docker run ... \ -e TYPESPIGOT \ -e SPIGOT_DOWNLOAD_URLhttps://example.com/mirror/spigot-1.21.jar ...environment: TYPE: BUKKIT BUKKIT_DOWNLOAD_URL: https://example.com/mirror/craftbukkit-1.21.jar两个变量分别作用于对应类型变量生效的 TYPE默认下载源BUKKIT_DOWNLOAD_URLBUKKIT匹配*BUKKIThttps://cdn.getbukkit.org/craftbukkit/...SPIGOT_DOWNLOAD_URLSPIGOThttps://cdn.getbukkit.org/spigot/...在 scripts/start-deployBukkitSpigot#L67-L109 中downloadSpigot函数按TYPE选择matchCraftBukkit/Spigot、downloadUrl与 getbukkit 风味标识若已设置对应 URL 则直接采用否则在VERSIONLATEST时先尝试解析站点最新版最后才拼默认 CDN 地址。下载通过get -o /data --skip-existing --output-filename完成--skip-existing意味着文件已存在时默认跳过配合上文FORCE_REDOWNLOAD才能强制覆盖。四、BUILD_FROM_SOURCE从源码构建 Spigot设置BUILD_FROM_SOURCEtrue可以让镜像使用 BuildTools 从源码构建 Spigot/CraftBukkit适用于获取更贴近上游源码的构建产物environment: TYPE: SPIGOT VERSION: 1.21 BUILD_FROM_SOURCE: true构建流程scripts/start-deployBukkitSpigot#L18-L65校验TYPE含BUKKIT时仅支持低于 1.14 的版本versionLessThan 1.14否则报错退出CraftBukkit 构建限制根据INIT_MEMORY/MAX_MEMORY/MEMORY计算构建用 JVM 堆参数支持百分比形式的-XX:InitialRAMPercentage/-XX:MaxRAMPercentage从 SpigotMC Jenkins 下载 BuildTools.jar执行java ... -jar BuildTools.jar --rev $VERSION按类型将产物移动为spigot-*.jar或craftbukkit-*.jar并命名为服务端 jar构建日志写入/data/spigot_build.log失败时打印该日志后退出。注意BUILD_SPIGOT_FROM_SOURCE同样可触发构建与BUILD_FROM_SOURCE为或关系见 scripts/start-deployBukkitSpigot#L123。构建耗时较长且对内存有要求构建过程中的 JVM 内存由MEMORY等变量控制。五、插件与后续处理链路Spigot 系服务端部署完成后镜像会统一进入 scripts/start-spiget 处理插件若设置了SPIGET_RESOURCES会调用 Spiget API 下载指定资源并按SPIGET_DOWNLOAD_TOLERANCE默认 5 分钟做版本缓存与增量更新判断同时支持REMOVE_OLD_MODS等清理策略。除此之外你还可以将插件放入挂载到/data的plugins目录或单独挂载/plugins卷详见 mods-and-plugins/index.md使用SPIGET_RESOURCES自动安装插件参考 mods-and-plugins/spiget.md通过 sending-commands 中的 RCON 或控制台向运行中的服务端发送命令。六、CraftBukkit 分支备选Canyon、Poseidon、Uberbukkit文档还介绍了三个面向 Minecraft Beta 的 CraftBukkit 分支它们都保留了对旧版 Bukkit 插件/模组的兼容适合怀旧服场景。这些类型在 scripts/start-configuration#L334-L360 中有对应分发。CanyonTYPECANYONCanyon 是面向 Minecraft Beta 1.7.3 的 CraftBukkit 分支docker run ... -e TYPECANYON -e VERSIONb1.7.3 ...仅支持VERSIONb1.7.3其他版本会在 scripts/start-deployCanyon#L11-L14 直接报错退出由于 b1.7.3 早于镜像健康检查机制所需版本必须设置DISABLE_HEALTHCHECKtrueCanyon 处于暂停维护状态默认使用 GitHub 上的最终构建对应CANYON_BUILDfinal个别构建可用CANYON_BUILD指定例如-e CANYON_BUILD6或-e CANYON_BUILD26更大的构建号32从 Jenkins 拉取具体下载逻辑见 scripts/start-deployCanyon#L35-L56。PoseidonTYPEPOSEIDONPoseidon 同样是 Beta 1.7.3 的 CraftBukkit 分支兼容旧版 Bukkit 插件docker run ... -e TYPEPOSEIDON -e VERSIONb1.7.3 ...同样仅支持VERSIONb1.7.3且需DISABLE_HEALTHCHECKtrue部署脚本 scripts/start-deployPoseidon 通过mc-image-helper github download-latest-asset从 GitHub 拉取最新 release 资产--name-pattern^(?!original-).\.jar过滤 jar 文件。UberbukkitUberbukkit 是支持多版本b1.0 至 b1.7.3的 CraftBukkit 分支。从镜像实现看Uberbukkit 复用 Poseidon 的下载链路将POSEIDON_TYPEuberbukkit时仓库切换为Moresteck/uberbukkit见 scripts/start-deployPoseidon#L19-L23因此可在TYPEPOSEIDON下搭配该变量使用 Uberbukkit 构建。Beta 版本注意事项汇总类型VERSION健康检查构建选择CANYON仅b1.7.3需DISABLE_HEALTHCHECKtrueCANYON_BUILD默认 finalPOSEIDON仅b1.7.3需DISABLE_HEALTHCHECKtrueGitHub 最新 releaseUBERBUKKIT经 POSEIDONb1.0–b1.7.3需DISABLE_HEALTHCHECKtruePOSEIDON_TYPEuberbukkit七、服务端类型的选型建议新开服 / 生产环境优先TYPEPAPER见 docs/types-and-platforms/server-types/paper.md其下载通道稳定、性能与插件兼容性俱佳且支持PAPER_BUILD、PAPER_CHANNEL等更细粒度控制必须使用 Spigot/Bukkit 语义TYPESPIGOT/BUKKIT仍可用但需接受 getbukkit.org 自动化下载可能失效的风险建议配合SPIGOT_DOWNLOAD_URL/BUKKIT_DOWNLOAD_URL自建镜像源怀旧 Beta 服Canyon / Poseidon / Uberbukkit 是主要选项注意版本硬限制与健康检查关闭要求如需更完整的类型列表与VERSION语义参见 docs/types-and-platforms/index.md各环境变量说明可查阅 docs/variables.md。小结在 docker-minecraft-server 中运行 Bukkit/Spigot 的核心要点可归纳为用TYPEBUKKIT|SPIGOT声明类型、用精确的VERSION如1.8-R0.1-SNAPSHOT-latest定位下载、用FORCE_REDOWNLOAD修复损坏 jar、用下载 URL 覆盖变量接入自建源需要时以BUILD_FROM_SOURCE走 BuildTools 源码构建。若追求稳定的自动化体验迁移到TYPEPAPER是文档给出的明确建议。【免费下载链接】docker-minecraft-serverDocker image that provides a Minecraft Server for Java Edition that automatically installs/upgrades versions, modloaders, modpacks and more at startup项目地址: https://gitcode.com/GitHub_Trending/do/docker-minecraft-server创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考