news 2026/8/24 16:20:50

AzerothCore-WoTLK Docker部署:新手15分钟跑通魔兽世界3.3.5a私服完整流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AzerothCore-WoTLK Docker部署:新手15分钟跑通魔兽世界3.3.5a私服完整流程

AzerothCore-WoTLK Docker部署:新手15分钟跑通魔兽世界3.3.5a私服完整流程

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

想象这样一个画面:你双击本地的魔兽世界客户端,登录界面弹出,输入自己刚建好的账号,角色直接站在了艾尔文森林的草地上。这不是官方服务器,而是跑在你自己电脑上的 AzerothCore-WoTLK——一个 C++ 编写的开源 MMO 服务器,完整实现了 3.3.5a(巫妖王之怒)版本的登录认证与世界逻辑。本文带你走一遍它的 Docker 部署路径,从装好环境到进游戏,大约 15 分钟,适合想搭一个本地调试环境或学习服务器架构的人。

动手前:5分钟把环境和仓库准备好

你只需要做三件事,全部在终端里完成:

  • 安装 Docker Desktop(Windows/macOS)或发行版仓库里的 docker 与 docker compose(Linux)。它是"在操作系统里跑虚拟环境的容器工具",装了它就不用手动配 MySQL、编译 C++ 那一长串依赖。
  • 克隆项目仓库。Git 在这里的作用相当于"下载并记住版本来源":
git clone https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk cd azerothcore-wotlk
  • 验证环境就绪:终端输入docker compose version,能打印出版本号就说明 compose 插件(v2)可用。

到这里,你不需要安装 MySQL、CMake、编译工具链里的任何一样——后面构建过程会在容器里自己完成。

点火启动:15分钟让五个容器跑起来

仓库根目录的 docker-compose.yml 把整套服务编排成了五个容器:MySQL 数据库、数据导入器、客户端数据初始化、认证服务器、世界服务器。依赖关系已经写死——数据库没就绪,其他容器不会抢跑。

现在点火:

docker compose build docker compose up -d

第一条命令编译构建镜像,第二条按依赖顺序启动全部服务并挂到后台。首次执行会比较久:要编译 C++ 代码、导入几千个 SQL 文件、下载客户端数据包,耐心等待比反复取消更明智。

用下面这条命令确认状态,五个容器都应处于 running 状态:

docker compose ps

如果 ac-worldserver 和 ac-authserver 都亮着绿字,服务器已经可以接收连接了。

跑起来之后:进控制台开出第一个账号

服务器没有现成账号,需要连进世界服务器的交互式控制台创建一个——它是服务器自带的命令行,能执行account create这类管理指令:

docker compose attach ac-worldserver AC> account create admin password 3 -1

命令里admin是账号名,password是密码(正式用请换掉),3是游戏内 GM 权限等级,-1表示不限制登录 IP。做完后按 Ctrl+P 再按 Ctrl+Q 断开控制台,服务继续在后台运行,不会中断。

从此以后你常用的入口就三个:docker compose logs -f看实时日志,docker compose ps看状态,docker compose down优雅关闭全部服务。

端口被占用怎么改

现象docker compose up -d后某个容器报端口绑定失败,或你本机已经跑着 MySQL,3306 端口被占。

原因:Docker 把容器端口映射到你电脑的端口。数据库、认证服务器、世界服务器的默认对外端口分别是 3306、3724、8085,撞车就起不来。

一条命令解决:docker-compose.yml 的端口映射全部支持环境变量,而环境变量会写进项目的 conf/dist/ 配置模板。不要动 compose 文件本身(仓库注释明确要求改动放 override 文件),在终端先导出变量再启动:

export DOCKER_DB_EXTERNAL_PORT=3307 DOCKER_AUTH_EXTERNAL_PORT=3725 DOCKER_WORLD_EXTERNAL_PORT=8086 docker compose up -d

数据库密码同理:DOCKER_DB_ROOT_PASSWORD。这些变量只在当前终端生效,长期生效写进你的 shell 配置文件即可。记住只改冒号前的对外端口,冒号后的 3306/3724/8085 是容器内部端口,改了服务之间就断联了。

容器启动失败怎么排查

现象docker compose ps里某个容器反复重启,或者一直卡在 starting。

原因:服务之间存在严格依赖链——数据库健康 → 数据导入成功 → 客户端数据就绪 → 认证/世界服务器才能启动,链条上任何一环断掉,后面全不动。

排查动作按顺序来:

docker compose logs ac-database docker compose logs ac-db-import

先确认数据库健康检查通过,再确认导入日志没有报错。日志里出现权限类错误(目录拒绝写入),多半是容器用户和宿主机目录属主不匹配,在启动前加一行export DOCKER_USER_ID=$(id -u)再重新 build。都不行时彻底重来:docker compose down,然后docker compose build --no-cache强制重建,最后再up -d

跑通之后:3件具体事

想给服务器加自定义内容,运行 modules/ 目录下的 create_module.sh 脚本(在 modules/ 下执行./create_module.sh 模块名),它会生成带完整目录骨架的模块,编译进服务器后就能挂新逻辑;参考文档在 modules/how_to_make_a_module.md。

想查服务器配置项,容器内的 etc 目录挂载在宿主机 env/dist/etc 下,改完重启对应容器即生效;端口这类环境变量级的改动,按上一节的流程处理。

想做数据备份,数据库就在 ac-database 容器里,一条 mysqldump 命令加--all-databases参数导出到本地文件,出问题时再导回去。

部署完成自检

  • docker compose ps显示五个容器全部 running
  • 通过account create成功建出账号,且能在控制台看到提示
  • 客户端填入对应端口后能进入登录界面
  • docker compose logs -f ac-worldserver确认无持续报错
  • 确认端口与默认值不同时,环境变量已写入 shell 配置

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 16:20:14

把视频提取PPT交给 extract-video-ppt:五分钟出一份干净 PDF

把视频提取PPT交给 extract-video-ppt:五分钟出一份干净 PDF 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt extract-video-ppt 只干一件事:把视频提取PPT&am…

作者头像 李华
网站建设 2026/8/24 16:17:25

向量分析与张量入门:从梯度、散度到应力张量的工程实践

如果你是一名物理、工程或计算机专业的学生,或者是一位需要处理空间数据、场论问题的工程师,当听到“向量分析”、“场论”、“张量”这些词时,是不是既感到它们无比重要,又觉得概念抽象、公式繁多,不知从何下手&#…

作者头像 李华
网站建设 2026/8/24 16:16:33

智能体持续学习防遗忘机制:从EWC到经验回放的工程实践指南

在实际的人工智能研究和工程实践中,智能体(Agent)框架的设计与实现是一个核心挑战。一个理想的智能体不仅需要具备强大的初始学习能力,更需要能够在动态环境中持续学习新知识,同时避免在学习新任务时遗忘旧技能。这种能…

作者头像 李华
网站建设 2026/8/24 16:15:41

[操作系统]一条-r参数之差:从Windows CMD到操作系统底层的层层递进

为什么Windows CMD的 move 指令中不需要加 -r 参数?原因如下: 1. move 指令默认支持对文件夹及其内部所有子文件、子文件夹的整体移动(即递归操作),无需额外参数开启递归功能。 2. -r 参数常见于Linux系统的 mv 等指…

作者头像 李华
网站建设 2026/8/24 16:14:18

Wand-Enhancer 完整指南:本地修补 WeMod,把锁住的功能拿回来

Wand-Enhancer 完整指南:本地修补 WeMod,把锁住的功能拿回来 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 周末想给正在打…

作者头像 李华
网站建设 2026/8/24 16:10:49

零代码AI工具实战:用扣子编程快速构建个性化错题练习网页

零代码打造错题专练网页:普通人也能自制的AI学习工具 你是不是也遇到过这样的烦恼?孩子或学生有一大堆错题,整理起来费时费力,想针对性练习却找不到合适的工具。市面上的学习软件要么功能太复杂,要么需要付费&#xff…

作者头像 李华