AzerothCore 魔兽世界私服 Docker 部署:三步跑起完整 WoTLK 服务器
2026/9/19 4:16:27 网站建设 项目流程

AzerothCore 魔兽世界私服 Docker 部署:三步跑起完整 WoTLK 服务器

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

AzerothCore 是魔兽世界 3.3.5a(WoTLK)的开源私服服务器项目,用 Docker 部署约 30 分钟即可跑起完整的认证与世界服务。下面带你走一遍从克隆仓库到建出第一个账号的流程。

先认识 AzerothCore:组件、端口与职责

AzerothCore 用 C++ 实现魔兽世界 3.3.5a 的服务端,游戏数据全部存在 MySQL 里。仓库根目录自带 docker-compose.yml,把数据库、登录认证、世界逻辑拆成独立容器,编译依赖也直接打进镜像,所以本机不需要安装任何 C++ 工具链。所有容器挂在同一个 Docker 网络里互相通信,宿主机只需要记住下表列出的对外端口:

组件端口职责
ac-database3306MySQL 8.4,存放账号、角色、世界三套数据
ac-authserver3724处理玩家登录认证,轻量独立
ac-worldserver8085游戏世界核心:地图、怪物、任务等玩法逻辑
ac-worldserver7878SOAP 接口,供外部程序调用
ac-db-import / ac-client-data-init一次性容器,导入数据库和客户端数据后自动退出

部署前 60 秒自检:Docker 环境要求

构建过程要下载依赖并编译整套 C++ 服务端,机器条件差一点就会卡住,动手前先花一分钟确认四项:

检查项要求不满足会怎样
Docker 工具链已装 Docker、Compose v2、buildx构建直接报错
网络能拉取镜像、下载源码依赖构建卡在下载步骤
可用内存建议 4 GB 以上编译进程被 OOM 杀掉
磁盘空间建议 20 GB 以上依赖与编译产物放不下

🚀 容器化部署步骤:克隆、构建、启动

全部命令都在项目根目录执行,一共三步。

第一步,克隆仓库并进入目录:

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

docker-compose.yml 在根目录,后续命令都依赖你站在正确位置,所以单独列一步。

第二步,构建镜像,把三个服务分别编译成独立镜像:

docker compose build

提示:首次构建要下载全部依赖并编译源码,可能耗时数十分钟;之后的增量构建走缓存,通常只要几分钟。

第三步,启动整个服务集群:

docker compose up -d

首次 up 时 ac-db-import 容器会把 SQL 数据灌进 MySQL,期间 worldserver 保持等待,属于正常现象,别中途终止容器。

验证服务在线并创建第一个管理员账号

服务起来后先确认状态。预期看到:ac-database 显示 healthy,ac-db-import 和 ac-client-data-init 已正常退出,ac-authserver 与 ac-worldserver 处于运行中。

docker compose ps

状态没问题就接入 worldserver 控制台建账号,其中 3 是管理员权限等级:

docker compose attach ac-worldserver

进入 AC> 提示符后执行:

AC> account create <账号名> <密码> 3 -1

注意:退出控制台要按 Ctrl+P 再按 Ctrl+Q,直接按 Ctrl+C 会连带终止 worldserver 服务;<账号名><密码>是占位符,上线前务必换成自己的强密码。

⚙️ 日常运维速查:状态、日志与重置

数据库数据存在 Docker 卷里,日常操作基本不用进容器,下面这张表覆盖绝大多数场景:

场景命令
看服务状态docker compose ps
跟踪 worldserver 日志docker compose logs -f ac-worldserver
看容器资源占用docker stats
重启 worldserverdocker compose restart ac-worldserver
停止服务(保留数据)docker compose down
彻底重置(删容器和卷)docker compose down -v

-v的 down 会连数据卷一起删,等于把服务器重置回空白状态,操作前想清楚;只想停服务就用不带-v的版本,角色数据不会丢。

三个最常踩的坑:端口冲突、内存不足、数据库连不上

端口被占怎么排查

现象:某个容器启动失败,日志提示端口已被占用。排查:docker compose logs ac-database确认报错的具体端口,宿主机上再用lsof -i :3306这类命令查谁在占用。解法:仓库自带模板 conf/dist/docker-compose.override.yml,在里面覆盖 DOCKER_DB_EXTERNAL_PORT、DOCKER_WORLD_EXTERNAL_PORT 等变量换端口即可,compose 文件头部注释也明确要求改 override 而不是原文件。

内存不足怎么排查

现象:容器反复被杀,或构建中途失败。排查:docker stats看各容器实时内存占用。解法:给 Docker 分配更多可用内存,或先关掉同机其他重负载进程再构建。

数据库连不上怎么排查

现象:worldserver 日志反复报数据库连接错误。排查:docker compose exec ac-database mysqladmin -u root -p密码 ping,默认 root 密码为 password,以 docker-compose.yml 为准。解法:确认 ac-database 已 healthy、ac-db-import 已完成后再看世界服日志,多数情况是启动顺序没等到而不是配置错误。

改端口、备份数据库与二次开发入口

改端口统一走环境变量:DOCKER_DB_EXTERNAL_PORT(3306)、DOCKER_AUTH_EXTERNAL_PORT(3724)、DOCKER_WORLD_EXTERNAL_PORT(8085)、DOCKER_SOAP_EXTERNAL_PORT(7878),或者写进 conf/dist/docker-compose.override.yml,改完重新 up 生效。

备份三套库的命令相同,换库名即可,characters 和 auth 同理:

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

想改玩法就写模块:执行./modules/create_module.sh 模块名生成骨架,细节见 模块开发指南;现有游戏内容都在 脚本系统,SQL 执行与表结构升级由 数据库抽象层 负责。

现在docker compose up -d起来之后,就能用刚建的账号登录进服了,细节参数以 Docker 部署说明 和仓库内配置模板为准。AzerothCore 把魔兽世界 3.3.5a 的完整服务端装进了几个容器,让你把时间花在玩法定制上,而不是环境配置上。

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

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

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

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

立即咨询