AzerothCore-WoTLK Docker 部署教程:10 分钟跑通 MMO 服务器的一键部署完整指南
【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk
完成本篇指南后,你将拥有一个可直接接入客户端的 AzerothCore-WoTLK 服务端环境:认证、世界、数据库三个游戏服务由一套 Docker Compose 工程统一拉起,全程只需要三条命令加一次初始化。
前置检查清单
开始前逐项确认,任何一项缺失都会导致后续步骤卡住:
- 操作系统:Linux / macOS / Windows(WSL2 下体验最佳)
- Docker 环境:Docker 引擎 + docker compose(v2)+ buildx 插件,Docker Desktop 已内置这三者
- 硬件资源:至少 4 核 CPU、8 GB 内存(镜像构建阶段为全量 C++ 编译,是资源峰值)
- 磁盘空间:预留 20 GB 以上(源码、构建缓存、客户端数据卷、MySQL 数据卷)
- 端口占用:默认使用 3306、3724、8085、7878 四个宿主机端口,可用
ss -lnt预先确认 - 无需本机安装:MySQL、CMake、Boost 等依赖全部封装在镜像内,主机保持干净即可
部署主线:三步完成
第一步:获取源码
git clone https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk cd azerothcore-wotlk预期现象:克隆完成后目录中出现 docker-compose.yml、apps/docker/ 等文件。耗时约 1~3 分钟,视网速而定。
第二步:构建容器镜像
docker compose build预期现象:终端持续输出各层编译日志,最终每个目标打印Successfully built。首次构建包含完整编译链(Clang + ccache),耗时约 30~60 分钟;再次执行时命中缓存,通常在 1 分钟内完成。
第三步:启动服务集群
docker compose up -d预期现象:容器按依赖顺序逐个进入running状态。首次启动会比后续慢,因为ac-db-import需要导入全部基础库与更新 SQL(约 5~15 分钟)。确认方式:
docker compose ps预期输出:ac-database状态为healthy,ac-db-import与ac-client-data-init显示exited (0)(一次性任务正常退出),ac-authserver与ac-worldserver为running。
服务全景
| 服务名 | 职责 | 宿主机端口 |
|---|---|---|
| ac-database | MySQL 8.4,承载 acore_auth / acore_world / acore_characters 三个库 | 3306 |
| ac-db-import | 一次性任务:导入基础数据与数据库更新 | 无 |
| ac-authserver | 客户端账号认证 | 3724 |
| ac-worldserver | 游戏主逻辑进程(含 SOAP 接口 7878) | 8085 |
| ac-client-data-init | 一次性任务:下载客户端 DBC 数据至独立卷 | 无 |
小贴士:不要直接修改 docker-compose.yml,官方要求将自定义改动写入
docker-compose.override.yml(模板见 conf/dist/docker-compose.override.yml)。
首次初始化:创建管理员账号
服务全部就绪后,需要为控制台创建第一个管理员账号才能进游戏:
docker compose attach ac-worldserver进入控制台后执行(等级 3,GM 权限 -1):
AC> account create admin password 3 -1预期现象:控制台提示账号创建成功。
重要提示:退出控制台必须按Ctrl+P 再按 Ctrl+Q。Ctrl+C 会向进程发送终止信号,导致 worldserver 退出并影响服务。
运维速查小抄
| 操作 | 命令 | 说明 |
|---|---|---|
| 实时日志 | docker compose logs -f ac-worldserver | 跟踪世界服日志,Ctrl+C 仅退出跟踪 |
| 状态检查 | docker compose ps | 确认各容器 running / healthy / exited(0) |
| 停止服务 | docker compose stop | 停容器但保留配置与数据 |
| 备份数据库 | docker compose exec ac-database mysqldump -u root -ppassword acore_world > backup.sql | 三个库可分别导出,root 默认密码password |
| 恢复出厂 | docker compose down -v | 删除数据卷,下次 up 重新导入,属破坏性操作 |
高频问题
问:端口被占用了怎么办?答:compose 支持环境变量覆写端口,在仓库根目录创建.env文件(模板见 conf/dist/env.docker),写入DOCKER_DB_EXTERNAL_PORT=3307之类的键值后重新docker compose up -d。四个对外端口均可用DOCKER_*_EXTERNAL_PORT调整。
问:改了代码如何生效?答:开发场景使用 dev profile,它会启动ac-dev-server并把整个源码目录绑定进容器:
docker compose --profile dev up -d容器内重新编译即可,无需重复走完整镜像构建;Linux / WSL2 下性能最佳(见 apps/docker/Dockerfile.dev-server)。
问:数据存放在哪里?答:MySQL 数据在ac-database卷,客户端 DBC 数据在ac-client-data卷,配置与日志落在宿主机的env/dist/etc、env/dist/logs目录。down不带-v时以上全部保留。
问:如何只更新工具而不重新编译?答:地图提取等工具由独立的toolsprofile 提供:docker compose --profile tools exec ac-tools bash,日常运行无需激活。
收束
容器化把环境差异压缩为零,你的精力可以全部留给脚本、数据库与玩法开发本身。
【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考