一份compose配置跑起Minecraft Forge服务器:从空目录到可进服
2026/9/12 6:01:59 网站建设 项目流程

一份compose配置跑起Minecraft Forge服务器:从空目录到可进服

【免费下载链接】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 镜像在容器启动时自动下载并装好指定版本的 Minecraft Forge 服务端,免去手动装 Java、下服务包的麻烦。本文演示如何用一份 compose 配置,把 Forge 1.20.1 服务器跑起来并确认玩家能正常连接。

动手前先核对环境

  • 一台能装 Docker 的机器(Linux 主机或 TrueNAS Scale 这类 NAS),已安装 docker compose
  • 内存至少 4GB,5 人以上联机建议 8GB
  • 预留 10GB 以上磁盘,存放服务端文件与世界数据
  • 使用的镜像为itzg/minecraft-server,官方入口见 docs/index.md

先理解数据怎么流动

动手前花 30 秒建立心智模型,后面排错会容易很多:

  • 服务端所有文件都在容器内/data目录,绑定挂载到主机的./data目录,容器删了世界数据还在
  • 每次启动时,入口脚本按环境变量自动下载并安装/升级 Minecraft 与 Forge,不需要手动维护安装器
  • 客户端连接的是主机 IP 的 25565 端口,再由 Docker 转发给容器内的服务端

下图展示了主机端口与容器端口的对应关系:

准备目录并编写 compose 配置

在主机上任选位置建目录,datamods两个子目录由挂载自动创建:

mkdir minecraft-forge && cd minecraft-forge

把以下内容存为compose.yaml

services: mc: image: itzg/minecraft-server ports: - "25565:25565" environment: EULA: "TRUE" TYPE: FORGE VERSION: "1.20.1" MEMORY: "4G" volumes: - ./data:/data - ./mods:/mods:ro restart: unless-stopped

这段配置里最关键的设置是TYPE: FORGEVERSION:前者决定用 Forge 加载器而不是原版,后者指定 Minecraft 版本,Forge 版本默认取该 MC 版本推荐的稳定版;想用特定版本可加FORGE_VERSION: "47.1.0"./mods:/mods:ro表示把 mods 目录以只读方式挂进容器,启动时其中的 jar 会被拷贝进服务端,日常放 mod 文件只操作主机目录即可。全部可配置变量汇总在 docs/variables.md,仓库自带的 Forge 示例见 examples/docker-compose-forge.yml。

如果习惯docker run写法,这张图对照了两种形式每个参数的对应关系:

![docker run参数与docker-compose配置对应关系图](https://raw.gitcode.com/GitHub_Trending/do/docker-minecraft-server/raw/91b98bcc7b55eb41c211b54706d5cd87911e8b8b/docs/img/Going from docker run to compose.drawio.png?utm_source=gitcode_repo_files)

启动容器并验证成功标志

docker compose up -d docker compose logs -f

首次启动会比较久:下载 Forge 安装器 → 安装 → 生成世界。成功的标志是日志出现这样一行:

Done (t=xx.xxxs)! For help, type "help"

随后打开游戏客户端,"添加服务器"填入主机 IP 与 25565 端口,列表里能看到服务器名称即部署完成。之后升级版本只需改VERSIONdocker compose up -d,容器会自行完成服务端升级。

两个高频进阶能力

  • 远程发命令(RCON):镜像默认启用 RCON。需要不打开控制台就执行stop、踢人、改 MOTD 时,设置RCON_PASSWORD后用容器内的rcon-cli操作,方式见 docs/sending-commands/commands.md。
  • 无玩家自动停止:跑在 NAS 上不想让它空转时,加ENABLE_AUTOSTOP: "TRUE"AUTOSTOP_TIMEOUT_EST(最后一人离线后多久停服),并记得把 restart 策略设为no,完整参数说明在 docs/misc/autopause-autostop/autostop.md。

启动排错速查

现象原因解法
Forge 安装报错或反复重装安装过程不完整临时加FORGE_FORCE_REINSTALL: "true",启动成功后删除该变量
卡在 "Changing ownership of /data"某些文件系统(常见于 NAS)上做属主检查很慢设置SKIP_CHOWN_DATA: "true"
提示端口 25565 已被占用主机端口被其他容器占走改映射为"26000:25565",客户端连 26000 端口
启动行为异常但看不出原因默认日志较精简DEBUG: "true"输出详细启动日志,更多排错手段见 docs/misc/troubleshooting.md

为什么推荐这种部署方式

整个服务端被隔离在一个容器里,主机不沾任何 Java 依赖;配置全部写在 compose 文件中,换机器时拷贝目录即可完整重建;世界数据落在自己控制的目录,备份就是打包一个文件夹。想让服务器更省心,可以先从 examples/autostop/compose.yml 里抄一份自动停止配置,照着本文的步骤再跑一遍,你会对这套流程更有把握。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询