用 Vagrant 在 DigitalOcean 上一键配置 Minecraft 服务器

2015-11-21 14:38:36 +08:00
 xucheng
https://github.com/xu-cheng/mc-vagrant
2934 次点击
所在节点    分享创造
5 条回复
KKKKKK
2015-11-21 15:48:36 +08:00
比 Docker 好?
imdjh
2015-11-21 22:06:26 +08:00
@KKKKKK 我觉得你说的不合理,身为 docker 技术的拥护者和实践者,我首先表示涨见识了, Vagrant 也能一定程度的运用在快发上。

0.LZ没有细说技术的细节,我稍微看了下(其实我用 docker 前也玩过 Vagrant 流浪汉),总的来说是利用了 Vagrant 的一个插件,将 DO 服务器作为"虚拟机"启动 Droplet ,是很值得肯定的有效玩法。

1. VagrantFile 基本上就是个 ruby 脚本,需要一定的知识作为基础(不然看不懂);相比 Dockerfile 是类似宏调用的 DSL ,学习成本较低(但是你要说 COPY 和 ADD 的区别的话,其实也是满麻烦的,你知道 WORKDIR 能自动创建文件夹么)

2. DO 的 Droplet 实际上是虚拟机啦,你说我在 DO 上开一个 docker Droplet 运行一个MC镜像。好吧,这两者有何不同。实际上用 Vagrant 启动的人家还自带 init 进程呢(我知道有 baseimage 啦,但是有多少能用的镜像是用 baseimage 作为基础的呢)。而且MC服务器是个非常吃内存的家伙,基本上开了MC的容器,共存的容器会挺可怜的,谁知道下一个被OOM的是谁?

3.说了那么多实际上,技术上的主要区别我觉得在于被初始化的脚本( Vagrant 中是 vm.Provision ),你有没有考虑守护进程的配置,服务出错的调试方案,防火墙配置,软件的定期更新,软件的优化,更在于这个项目本身的易读易改性,谁都不想照着本 500 页的手册页只为了编写一个 APP 是吧(向卡西欧图形计算器致敬)。个人以为 docker 这方面做的很好,比如我只需要在启动时配置“环境变量”就能决定我开哪个版本的服务器(超赞是吧 ;)),而无需触及启动脚本本身。

Extra. 但我看到一个弱点, Vagrant 的那个 DO 插件在自启时会下载后缀是 box 的虚拟机文件(类似于 docker 中的镜像,但是 docker 镜像可以是分成的,感谢 aufs ),这个文件已经3年没有更新了。盆友们,整整3年啊,就算你 bootstrap 的第一行命令能修复 heatbleed, shellshock,但是这肯定是要比 docker 镜像处理的时间长的,毕竟镜像的层能复用,能并行下载各层,而且更新也很轻巧。

TL,DR; 还是我 docker 大法好!
imdjh
2015-11-21 22:11:23 +08:00
上面唠叨的太多,下面是一个我用过得 MC 服务器的 docker 镜像实现(任意版本,同样是从亚马逊 S3 下载服务器 jar ):
https://hub.docker.com/r/itzg/minecraft-server/

以及我自己基于这个定制的,无需从 S3 下载的 1.8.1 版本( out dated too much ,国内做做参考还是够得):
https://github.com/imdjh/mymc
xucheng
2015-11-21 22:21:31 +08:00
不用 docker 是因为这个脚本主要自用,不想特别折腾。同时是为了省内存。

> 这个文件已经3年没有更新了。

那是一个 dummy 的空文件。真正的 base 是 DO 提供的镜像。
imdjh
2015-11-29 22:10:12 +08:00
@xucheng 学习了,看来这是个 Vagrant 的 hack 用法咯

>同时是为了省内存。

这点我同意。

但是用户**学习成本高**,而且**不容易定制**的弱点,你还是同意的吧(我们就说版本号吧)。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/237848

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX