使用 MCSManager 管理 Docker Compose 部署的 MC 服务器
MCSManager 面板、MC 服务器都使用 Docker Compose 部署。
为了在这种情况下仍然能够使用 MCSManager 在线面板管理服务器,需要进行一系列操作,将两者嫁接起来。
1. 部署 MC 服务器
所有服务器文件夹都放在宿主机的同一个目录 mc-servers 目录下
举例:MC 服务器 1 在
mc-servers/Server1,里面有docker-compose.yml和服务器的所有数据,比如mods,configs,world,server.properities, …MC 服务器的
docker-compose.yml中需要启用容器的 TTY:tty: true stdin_open: trueMC 服务器目录下写 MCSManager 启动脚本
mcsm-run.sh:#!/bin/bash # 当sudo二进制不存在,直接忽略它 command -v sudo >/dev/null 2>&1 || { sudo() { "$@"; }; } # 检查第一个服务是否存在,并返回其CID get_running_first_service_cid() { # 获取第一个服务名 local service_name=$(sudo docker compose config --services 2>/dev/null | head -n 1) if [ -z "$service_name" ]; then return; fi # 获取CID local cid=$(sudo docker compose ps -q "$service_name" 2>/dev/null) if [ -z "$cid" ]; then return; fi # 检查容器运行状态 local is_running=$(sudo docker inspect -f '{{.State.Running}}' "$cid" 2>/dev/null) if [ "$is_running" = "true" ]; then echo "$cid" fi } CID=$(get_running_first_service_cid) if [ -n "$CID" ]; then # CID不为空 echo "[MCSM-Compose-Helper] 检测到服务器正在运行中" else # CID为空 echo "[MCSM-Compose-Helper] 正在启动 Docker Compose 服务..." sudo docker compose up -d if [ $? -ne 0 ]; then echo "[MCSM-Compose-Helper] 错误:Docker Compose 启动失败。" exit 1 fi sleep 2 CID=$(get_running_first_service_cid) if [ -z "$CID" ]; then echo "[MCSM-Compose-Helper] 错误:无法获取到任何正在运行的容器 ID。" echo "[MCSM-Compose-Helper] 请检查 sudo docker-compose.yml 是否配置正确,或容器是否立即退出了。" exit 1 fi fi echo "[MCSM-Compose-Helper] 正在连接控制台..." # 看门狗循环:只要容器在运行,就保持 Attach while [ "$(sudo docker inspect -f '{{.State.Running}}' "$CID" 2>/dev/null)" = "true" ]; do # 尝试连接控制台 sudo docker attach "$CID" # 如果 attach 断开(例如网络波动),检查容器是否还在运行 if [ "$(sudo docker inspect -f '{{.State.Running}}' "$CID" 2>/dev/null)" = "true" ]; then # echo "[MCSM-Compose-Helper] 控制台连接已断开,容器仍在运行。将在 1 秒后自动重连..." sleep 1 fi done echo "[MCSM-Compose-Helper] 服务器已停止运行。停止其他服务..." sudo docker compose down echo "[MCSM-Compose-Helper] 所有容器已停止。" exit 0
2. 部署 MCSManager
MCSM-Daemon 的 docker-compose 中,设置如下 volumes 映射:
/usr/bin/docker:/usr/bin/docker/usr/libexec/docker/cli-plugins:/usr/libexec/docker/cli-plugins/var/run/docker.sock:/var/run/docker.sock
这些映射用于支持在 MCSM-Daemon 容器内管理宿主机的 Docker 服务。
以及最重要的映射:
..../mc-servers:/mc-servers
3. 在 MCSManager 中创建实例
在 MCSManager 中创建普通应用实例
- 工作目录:
/mc-servers/Server1 - 启动命令:
bash mcsm-run.sh - 停止命令:
stop - 确保实例的 “仿真终端” 处于打开状态
点击 开启 按钮,MCSManager 将拉起服务器容器,并附加到其 tty 上。此时可以正常使用仿真终端、发送命令等,文件管理也可以正常使用
点击 关闭 按钮停止服务器容器,除了服务器以外 Compose 中其他的服务也将被一并停止
强制终止按钮不可用,因为只会杀死 bash 进程
使用 MCSManager 管理 Docker Compose 部署的 MC 服务器
https://blog.openyq.top/posts/11373/