🐳 Minecraft + Docker:我的个人配置,摆脱 Java 的痛苦
Source: Dev.to

我并不是 Java 大师,老实说:管理 Minecraft 服务器一直让我感觉像是个奇怪的谜题。即使 Minecraft 看起来像是一个关于放置方块的“随意”游戏,服务器背后的技术管理(线程、内存、垃圾回收)却是一个令人着迷的优化挑战。
过去,我尝试编写插件(结果…“有趣”),但我吃了苦头才明白,真正的战斗几乎总是配置。
你有没有遇到过这种情况?想和朋友一起玩生存模式,搜索“最佳 paper 1.21 配置”,结果打开了 20 个标签页,却看到三篇互相矛盾的 Wiki。
计划:足够的混乱
厌倦了一遍又一遍复制粘贴相同的配置行,我决定构建 Paper Config Optimized。
我不想只做“又一本指南”。我想要一个真正将社区最佳实践集中到可直接使用的文件中的地方。事实上,我已经如此热衷于这种“基础设施即代码”的方法,以至于最近对我们使用的官方 Docker 镜像仓库做出了首次贡献(在 itzg/docker-minecraft-server 中的 PR #3076),并计划继续贡献以改进整个生态系统。
“配方”(配置)
下面是我一直使用的配置。它基本上就是我的 “复制、粘贴、忘记” 模板。
这里重要的是我们向 Docker 传达了两个关键点:
- “使用 Aikar 的参数” – 这样 Java 就不会在内存上挑剔。
- “从仓库下载配置” – 这样游戏可以顺畅运行,无需手动干预。
services:
mc:
image: itzg/minecraft-server
container_name: paper-lite
restart: unless-stopped
ports:
- "25565:25565"
# Interactive console (never hurts to see what's happening)
stdin_open: true
tty: true
environment:
# Mojang bureaucracy and software choice (Paper flies)
EULA: "TRUE"
TYPE: "PAPER"
# Always the latest. Living on the edge.
VERSION: "LATEST"
# We activate Aikar's flags.
# Trust me, you don't want to manage the Garbage Collector manually.
USE_AIKAR_FLAGS: "true"
# Timezone (change to yours so logs make sense)
TZ: "America/Santiago"
# ✨ THE MAGIC:
# Automatically injects optimized configs from the repo at startup.
PAPER_CONFIG_REPO: "https://raw.githubusercontent.com/Alpha018/paper-config-optimized/main"
volumes:
- ./minecraft-data:/data
如何运行?
只需将上述内容放入 docker-compose.yml 文件,在该文件夹中打开终端,然后运行:
docker compose up -d
⚖️ 平衡:优缺点
✅ 好处(Pros)
- Speed – 在 2 分钟内从“零”到“优化的服务器”。
- Maintenance – 通过使用
PAPER_CONFIG_REPO,如果明天有性能改进,只需重启容器即可应用。 - Stability – 使用 Aikar’s Flags 可消除 90 % 的 Java 引起的卡顿峰值。
❌ 坏处(Cons)
- Black Box – 如果你喜欢手动微调每个
view-distance,可能会觉得失去了一些控制(尽管你仍然可以覆盖文件)。 - Dependency – 你依赖我的仓库(或你自己的分支)在启动时在线下载配置。
🚀 高级用户
此配置是我所称的“轻量技术生存”的理想选择。如果您计划建立一个大型公共社区(50+ 玩家)或想了解为何 12 GB RAM 是我对大型服务器的魔法数字,我撰写了更深入的技术指南。
💌 特别致谢
致一位女孩,她在不自觉中推动我在业余时间继续创作和编程。致那曾经点燃我灵感的人:感谢 “YLP”,以及那些同样教会我的伤痕。