使用Docker-compose搭建与管理基岩版Minecraft

0.说明

使用 docker 或者 docker-compose 与直接下载基岩版服务端没有本质上的区别。

所以也可以自己去下载服务端进行搭建,详见:

但用 Docker-compose 部署会更方便,都不用去官网找连接下载,一行命令就可以搞定。重启等操作也很简洁。

1. Docker 安装

(注:整体参考 Docker 官方的安装教程:https://docs.docker.com/engine/install/debian/

首先更新一下 apt-get,一个 Debian 下常用的包管理工具。

$ sudo apt-get update

使用 apt-get 安装一些之后需要的工具:

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

添加 Docker 的官方 GPG key:

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

添加完之后可以确认一下是否添加成功

$ sudo apt-key fingerprint 0EBFCD88

为 apt-get 添加 docker 官方的库地址

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/debian \
   $(lsb_release -cs) \
   stable”

添加完成后,再次更新 apt-get,并安装 docker 相关服务

sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io

检查一下 docker 是否正常运行

sudo docker run hello-world

如果出现类似以上内容,则代表运行正常。

2. Docker-compose 安装

Docker-compose 可以方便地部署多个 Docker 服务。

(注:安装方法主要参考:https://docs.docker.com/compose/install/

安装 pip3

sudo apt-get pip3 -y

安装 docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

修改权限并进行软链接

sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

3. 部署基岩版 Minecraft 服务端

这里使用已搭建好的 itzg/minecraft-bedrock-server (目前来看更新比较及时,基本跟上官网版本),其 docker hub 见:https://hub.docker.com/r/itzg/minecraft-bedrock-server

创建一个用于管理 Minecraft 的文件夹,如 mymcbe_management ,并进入:

mkdir mymcbe_management
cd mymcbe_management

创建 docker-compose 的配置文件 docker-compose.yml

vi docker-compose.yml

粘入以下内容,并根据需要修改

services:
   mymcbe: #容器名
     image: itzg/minecraft-bedrock-server #所用的镜像
     restart: always
     ports:
       - "19132:19132/udp" #开放的端口
     environment: #主要针对 server.properties 中的配置。启动时会根据下方内容修改 server.properties 中对应内容,也可以这里不填,手动修改 server.properties
       EULA: "TRUE" 
       SERVER_NAME: PP_HK #服务器名字
       GAMEMODE: survival #模式
       DIFFICULTY: hard #难度
       ONLINE_MODE: "false" #强制要求登陆 Microsoft,true 会导致登陆偶尔有点慢,特别对于大陆。但设置 false 可能导致偶尔上线后账号看似重置(实质为没有登陆成功,而对应了不同的 uid)
       ALLOW_CHEATS: "false" #是否允许作弊
     volumes:
       - /ppfiles/mymcbe:/data #配置和存档等文件的持久化挂载路径

设置完毕后,Esc,输入:wq 保存退出

使用如下命令即可自动搭建:

docker-compose up -d

出现以上内容即搭建成功,可以尝试连接试试。

4. 后续管理

4.1 配置

进入配置和存档的持久化文件夹。

基本配置在 server.properties 中

permissions.json 可以对玩家配置权限

whitelist.json 可以配置白名单

behavior_packs、resources_packs 可以放 mod 或资源包

4.2 查看服务器日志

首先找到对应容器,输入

docker ps -a

查看所有正在运行的容器。

找到 Minecraft 的容器(其名字由管理文件夹和配置中的容器名构成)。如:

输入(将 mymcbe_management_mymcbe_1 替换为你的容器名),即可查看日志

docker container logs -f mymcbe_management_mymcbe_1

Ctrl+C 可退出容器日志

4.3 停止服务端

在 Minecraft 的 docker-compose 管理文件夹中,输入

docker-compose stop

即可停止

4.4 重启服务端

在 Minecraft 的 docker-compose 管理文件夹中,输入

docker-compose stop
docker-compose rm -f
docker-compose up -d

即可删除容器,再重建(由于有将配置和存档持久化,所以对玩家而言等效于重启)

4.5 完全删除 Minecraft 服务端

可以先停止并移除容器

docker-compose stop
docker-compose rm -f

再移走或删除配置和存档的持久化文件夹,如

rm -rf /ppfiles/mymcbe

即可完全删除。之后重建容器也是新的世界。

4.6 简单的定时自动备份存档

个人用的备份方法很简单粗暴,即定时(每24小时)把 world 文件夹压缩成如 mymcbe_worlds_backup_23.zip 最后的数字为当天的日期(即最多保存31份,一个月)。需要恢复时,删除当前 world 文件夹,直接解压过来就行。

可找一个文件夹,如之前的 mymcbe_management。

创建一个自动备份脚本 mc_auto_backup:

vi mc_auto_backup.sh

粘入以下内容并根据需要修改

 first_wait_time=43200 #首次重启备份的等待时间,秒为单位。主要为推至夜间重启和备份
 first_time=$(date "+%Y-%m-%d-%H-%M-%S" -d "+${first_wait_time} seconds")
 echo "first backup time at ${first_time}"
 sleep ${first_wait_time}
 

 while true
 do
     period=86400 #两次重启备份的间隔时间,此为一天
     time=$(date "+%Y-%m-%d-%H-%M-%S")
     filetime=$(date "+%d")
     next_time=$(date "+%Y-%m-%d-%H-%M-%S" -d "+${period} seconds")
     echo "stop at ${time}"
     docker-compose stop
#备份至的源与目标文件夹和文件名,个人是备份至 webdav 的文件夹,方便查看和管理
     zip -r /ppfiles/mywebdav/mymcbe_backups/mymcbe_worlds_backup_${filetime} /ppfiles/mymcbe/worlds
     echo "finish backup mymcbe_worlds_backup_${filetime}"
     docker-compose rm -f
     docker-compose up -d
     echo "finish restart"
     echo "next backup time at ${next_time}"
     sleep ${period}
 done

保存并退出。

为方便管理,建议安装 Screen:

新建用于 Minecraft 备份的窗口

screen -S mc_auto_backup

运行脚本

sh mc_auto_backup.sh

可以 Ctrl+a+d 分离窗口。未来想查看时,再

screen -r mc_auto_backup

进入窗口查看日志。

运行正常,应该能看到自动备份出的文件

Leave a Comment