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-database | 3306 | MySQL 8.4,存放账号、角色、世界三套数据 |
| ac-authserver | 3724 | 处理玩家登录认证,轻量独立 |
| ac-worldserver | 8085 | 游戏世界核心:地图、怪物、任务等玩法逻辑 |
| ac-worldserver | 7878 | SOAP 接口,供外部程序调用 |
| 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-wotlkdocker-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 |
| 重启 worldserver | docker 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),仅供参考