构建我的世界服务器基础镜像
创建 Dockerfile
1 | FROM openjdk:21 |
创建入口脚本 entrypoint.sh
1 |
|
赋予可执行权限
1 | chmod +x entrypoint.sh |
构建镜像
1 | docker build -t minecraft-server:0.0.1 . |
运行
1 | docker run -it -p 25565:25565 -v /data/docker/minecraft/server:/workspace --name minecraft-server-1.21.3 minecraft-server:0.0.1 |
镜像第一次运行时会创建 start.sh 脚本,在脚本内执行服务器运行命令,如:
1 | #!/bin/sh |
上传好服务端启动文件等基础文件之后再次启动容器即可。
使用 MCSM 托管我的世界服务器
这里使用 Docker 托管 MCSM,不直接在主机上面安装
创建如下 docker-compose.yml 文件,用来运行 mcsmanager-daemon,可自需更改。
1 | services: |
安装好 MCSManager 前后端之后,正常创建Docker实例即可。
使用 Docker 运行 MCSM 后端时的注意点
daemon 与 mc-server 容器是平级的,daemon 容器中有 /opt/mcsmanager/daemon/data,因为已经挂载,但是主机当中没有,这时候 mc-server 容器启动时想要挂载 /opt/mcsmanager/daemon/data,会出现找不到目录的报错,/data/docker/mcsm/daemon:/data/docker/mcsm/daemon daemon 多挂载一个目录,将 /data/docker/mcsm/daemon 作为 daemon 配置的工作目录,这时候 daemon 在启动 mc-server 容器时,会自动配置成 /data/docker/mcsm/daemon,这个目录在主机中是存在的,所以就避免报错了。
如果 daemon 前后挂载点都是
/opt/mcsmanager/daemon/data的话,是不会出现这个问题的,我认为这是一个BUG,但是这个BUG能在代码层次之外解决掉。