一条命令拉起暮色森林服务器:Docker Minecraft Server 自动化部署教程
【免费下载链接】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
想让朋友进你的暮色森林服务器,最烦的不是开服,而是开"前置":加载器、模组 jar、前置依赖、版本对齐,一样都得手动凑齐。用 docker-minecraft-server(itzg/minecraft-server)就能把这堆杂活压成一行配置:把暮色森林的项目名填进环境变量,容器启动时自己解析、自己下载、自己拉起跑通。
快速上手:最小配置先跑起来
新建一个docker-compose.yml,关键就是下面这段:
services: mc: image: itzg/minecraft-server tty: true stdin_open: true ports: - "25565:25565" environment: EULA: "true" TYPE: FORGE # 暮色森林是 Forge 系模组,加载器类型要跟它一致 VERSION: 1.20.1 # 服务端版本,换成你的模组支持的版本 MODRINTH_PROJECTS: "twilightforest" # 只写 Modrinth 项目名 volumes: - data:/data volumes: data: {}docker compose up -d之后,容器启动时会自动安装服务端、从 Modrinth 把暮色森林最新版拉进mods目录,然后直接进服。想先抄作业的话,仓库里的 examples/modrinth/modrinth-projects/compose.yml 就是这个套路。
幕后原理:模组是怎么自动下下来的
核心开关只有一个:MODRINTH_PROJECTS。容器每次启动都会拿着这份清单去 Modrinth 仓库查项目,按你当前的TYPE(加载器)和VERSION(MC 版本)挑一个匹配的最新版本下载下来,之前下过的旧文件版本会被自动清掉,列表里删掉的条目下次启动也会从mods目录移除——装、更、卸都是自动的。
每个条目支持冒号分隔的组合写法,常用格式一览:
| 写法 | 效果 |
|---|---|
twilightforest | 取该模组最新 release 版 |
twilightforest:1.10.4 | 锁定到指定版本号 |
twilightforest:Oa9ZDzZq | 用版本 ID 精确指定,跳过兼容性检查 |
twilightforest:beta | 在该模组的 beta 版里挑最新 |
@/extras/modrinth-mods.txt | 从挂载的清单文件批量读入,每行一个项目 |
条目前缀forge:、fabric:、paper:可以跨加载器装东西,后缀?表示"可选项":找不到兼容版本时只打警告不卡启动。更细的参数格式见 Modrinth 自动下载文档。
不想走仓库 API 也行:准备一个每行一个 jar 直链的mods.txt,通过MODS_FILE指给容器,挂载示例看 examples/mods-file/docker-compose.yml,链接列表长这样:examples/mods-file/mods.txt。
进阶玩法:只改几行,服务器更省心
版本锁定只改一行。不想每次重启都跟到最新版,就在项目名后加冒号跟版本号,MODRINTH_PROJECTS: "twilightforest:1.10.4"即可,重启多少次都装这一版。
前置依赖让容器自己补齐。暮色森林这类模组通常依赖 Bookshelf 等前置,加上这一行,启动时它会把 required 依赖一并拉下来:
MODRINTH_DOWNLOAD_DEPENDENCIES: "required"不想依赖自动解析的话,也可以把前置 jar 的直链写进mods.txt手动指定,两条路线二选一。
数据不丢的挂载姿势。上面的data:/data已经把世界、模组、配置都放进了具名卷,容器删了数据还在。想把世界指到本地固定目录,直接换成 bind 挂载/data,也可以把现成的世界压缩包(zip/tar)交出去让它自动解压就位,详见 世界数据文档。
没人玩就自动关机。加两行,最后一个人下线后按设定的秒数自动停服,适合挂在有账单的机器上:
ENABLE_AUTOSTOP: "true" AUTOSTOP_TIMEOUT_EST: "3600" # 最后一个人离开后 3600 秒停服完整示例在 examples/autostop/compose.yml,参数说明见 autostop 文档。
避坑清单:翻过这几个坑再开服
- 坑 1:加载器类型对不上。网上不少教程写着
TYPE: FABRIC却装 Forge 系模组——暮色森林是 Forge/NeoForge 平台的,Fabric 加载器根本吃不下它,启动必挂。先看模组在 Modrinth 页面标注的 loader,再把TYPE改成对应值(FORGE、NEOFORGE等),各类型说明在 服务端类型文档。 - 坑 2:缺前置导致崩溃循环。日志里反复出现 "Could not find dependency",说明 Bookshelf 之类的前置没被带上。加
MODRINTH_DOWNLOAD_DEPENDENCIES: "required"即可,或者把?只留给真正非关键的模组,主模组千万别标成可选。 - 坑 3:版本冲突怎么查。先
docker logs <容器>看报错定位是哪个 jar 不兼容;确认模组支持的 MC 版本范围;用twilightforest:版本号锁死后再清一次/data/mods重启,让容器按锁定版本重装一遍。
写在最后
把模组名填进MODRINTH_PROJECTS、给/data挂上卷,暮色森林服务器的"装模组"环节就只剩一个docker compose up。更多平台类型的示例(Forge、Modrinth 全家桶、mods.txt 直链)都在仓库的 examples 目录 里可以直接抄;如果要把整套示例拉回本地改,仓库地址是git clone https://gitcode.com/GitHub_Trending/do/docker-minecraft-server。
【免费下载链接】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),仅供参考