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),仅供参考