AzerothCore 完整 Docker 部署指南:三步拉起魔兽世界私服,半小时即可开服
2026/9/19 16:20:20 网站建设 项目流程

AzerothCore 完整 Docker 部署指南:三步拉起魔兽世界私服,半小时即可开服

【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk

在 Linux 终端里敲下worldserver,看到一串长得像小说的依赖安装清单,你就会明白为什么魔兽世界私服都交给 Docker 部署了。AzerothCore 是一个开源的魔兽世界(WoTLK)服务端实现,Docker 部署之后,它能在一台普通机器上拉起包含数据库、登录、游戏世界在内的完整服务端集群。

容器化到底省了什么

手动搭建魔兽世界服务端的卡点从来不在游戏本身,而在编译链:cmake、Boost、OpenSSL、MySQL 客户端库,任何一环装错就得推倒重来,跨系统还会遇到版本不一致的玄学问题。Docker 方案把整条工具链和源码预编译进镜像,本地只做三件事——拉代码、构建、启动,配置项通过环境变量注入,数据库自动建库导数。收益不只是快,而是环境可复现:你机器上跑通的配置,朋友机器、重装系统之后都能原样跑通,排障时不再需要排除"我的环境为什么不一样"这一类问题。

动手前看一眼:硬件软件前提与三个容器的分工

先把前提列清楚,共四条:

  • Docker + Docker Compose V2(Docker Desktop 自带,Linux 可用发行版包管理器安装)
  • 至少 4GB 可用内存
  • 至少 20GB 可用磁盘空间
  • 稳定的网络连接(首次构建要下载大量依赖)

环境就绪后,看看集群里都有谁。docker-compose.yml 中与你打交道最多的是三个容器:ac-database是 MySQL 8.4 实例,存账号、角色和全部游戏数据,对外端口默认 3306;ac-authserver是登录服务,只负责玩家上线时的凭据校验,监听 3724;ac-worldserver是主体,地图、战斗、任务等全部游戏逻辑都跑在它里面,客户端连 8085,另有一个 SOAP 管理接口在 7878。Docker Compose 相当于一份"服务全家福"清单,一次把三者拉齐并接好内部网络,IP 和依赖顺序都不用你操心。

AzerothCore 三步启动完整集群

先拉代码。把项目克隆到本地并进入根目录:

git clone https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk cd azerothcore-wotlk

再做镜像构建。这一步会在容器里完整编译 worldserver 等二进制,首次大约 30 到 60 分钟,可以先去泡杯茶:

docker compose build

最后启动集群。这条命令会先起数据库,再跑一次性的 db-import 任务导入基础数据,两者完成后才拉起 authserver 和 worldserver,首次等待时间偏长属正常现象:

docker compose up -d

全部就绪后,用docker compose ps确认各容器状态为健康即可。

🔑 拿到 worldserver 控制台后的第一件事:建管理员账号

集群跑起来了,但还没法进游戏,因为管理员账号还不存在。下面的命令会直接接上 worldserver 主进程的 stdin,也就是它的命令控制台:

docker compose attach ac-worldserver # 看到 AC> 提示符后执行,密码请换成自己的强密码: account create admin password 3 -1

用 attach 而不是 exec,是因为控制台命令挂主进程 stdin 上才最干净,attach 直连主进程,不会出现另开会话导致的进程状态错位。建号完成后按 Ctrl+P 再按 Ctrl+Q 退回宿主机,别直接按 Ctrl+C——那会把容器一起带走。账号密码别用弱口令,开服前改掉默认值是最低要求。

AzerothCore 日常运维速查:实时日志、改端口、备份数据库

想看 worldserver 实时日志、集群状态,或者重启某个服务,用这一组:

docker compose logs -f ac-worldserver docker compose ps docker compose restart ac-worldserver

想改端口,比如 8085 被占了。不要动 docker-compose.yml 本体,给它设置对应的环境变量再启动:

DOCKER_WORLD_EXTERNAL_PORT=8086 docker compose up -d

数据库 3306 和登录 3724 同理,对应DOCKER_DB_EXTERNAL_PORTDOCKER_AUTH_EXTERNAL_PORT

想备份数据库。数据平时已自动落在 Docker 卷里,定期手动导出一份更稳妥:

docker compose exec ac-database mysqldump -u root -ppassword acore_world > world_backup.sql

恢复时把备份文件通过mysql命令灌回去即可。不玩的时候docker compose down可停掉整套服务且保留数据,想彻底重置就加-v

🚑 翻车急救:端口占用、内存不足、数据库连不上三种高频问题

现象up -d之后有服务反复重启,或提示端口冲突。大概率原因:宿主机上已有别的程序占着 3306、3724 或 8085。解法:用sudo lsof -i :3306这类命令定位占用者,然后要么结束它,要么用上一节的环境变量把端口错开。

现象:服务起来了但操作明显卡顿,或容器频繁 OOM。大概率原因:4GB 内存对 MySQL 加 worldserver 是紧平衡,两边都在抢。解法:用docker stats看谁吃得最多,调低 worldserver 配置里的 PlayerLimit,或给 Docker 提高内存配额。

现象:worldserver 反复报数据库连接失败。大概率原因:数据库健康检查没通过,或 root 密码不是默认值password解法:先直接 ping 一下数据库确认它活着:

docker compose exec ac-database mysqladmin -u root -ppassword ping

ping 通了说明是配置问题,回到docker compose logs ac-database看具体报错。

想继续深挖:模块化开发与源码结构

AzerothCore 把游戏逻辑拆成可独立挂载的模块,新玩法不需要改动核心代码,参考 模块开发指南 就能动手;游戏逻辑主体在 src/server/game/,任务副本相关的脚本系统位于 src/server/scripts/,想改战斗或 AI 就从这两个目录读起。

魔兽世界私服搭建到这一步,已经不再是件难事。半小时、三条命令之后,你手里就是一个能登录、能进世界的完整集群。不管是先拉上朋友开服,还是打算改源码做自己的版本,这套部署方式都留足了往深处走的空间。

【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询