
Docker 部署魔兽世界私服完整实战30 分钟用 AzerothCore 跑起可登录的 3.3.5 服务器【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlkAzerothCore 是完整实现魔兽世界 3.3.5WoTLK游戏逻辑的开源服务器引擎。本文带你用 Docker 完成魔兽世界私服容器化部署全程无需手动装 MySQL 或编译工具链做完即可用 3.3.5 客户端登录、建角、进图。开工前自检5 分钟确认环境是否就绪部署前把下面 5 项过一遍全部满足才能开工。任何一项不满足后面的构建或登录都会卡住检查项要求为什么重要操作系统Linux、macOS或 Windows WSL2镜像构建与挂载依赖这些平台的文件系统行为Docker已安装且带 Compose v2 插件整个部署靠docker compose编排 5 个容器Docker Desktop 默认自带宿主机端口3306、3724、8085、7878 空闲3724 是认证端口、8085 是游戏端口客户端就靠它们连进来磁盘空间至少预留 30GB首次构建要在容器里完整编译一遍 C 源码产物不小游戏客户端魔兽世界 3.3.5 版本一份最后一步登录验证要用版本必须严格是 3.3.5别的版本协议对不上运行两条命令自检都能正常输出即可继续docker compose version # 输出版本号即 Compose v2 已装 docker ps # 不报错即 Docker 守护进程正常部署主流程5 个步骤把私服跑起来第 1 步拉取源码并构建全部镜像git clone https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk # 拉取 AzerothCore 源码 cd azerothcore-wotlk docker compose build # 一次构建出全部服务镜像会发生什么构建会在一个 Ubuntu 24.04 容器内用 CMake clang 完整编译 authserver、worldserver 以及数据库导入工具dbimport同时生成 MySQL、数据库导入、客户端数据初始化等配套镜像。首次构建预计 30~60 分钟这是完整编译源码的正常耗时构建层有缓存之后改代码再构建会快很多。怎么算成功docker images里能看到acore/ac-wotlk-worldserver、acore/ac-wotlk-authserver、acore/ac-wotlk-db-import等镜像且docker compose build退出码为 0。第 2 步启动全部服务docker compose up -d # 后台启动按依赖顺序拉起容器会发生什么编排文件 docker-compose.yml 里写死了启动顺序——MySQLac-database先起来并通过健康检查每 5 秒执行一次SHOW DATABASES探活然后 ac-db-import 容器把 data/sql 下的基础数据和升级脚本依次导入acore_auth、acore_world、acore_characters三个库最后才拉起 ac-authserver 和 ac-worldserver。数据库导入预计 5~15 分钟日志里会滚出一条条 SQL 文件导入记录。容器启动时 entrypoint容器启动脚本会自动把镜像内自带的*.conf.dist配置模板复制为正式配置落到挂载目录env/dist/etc/下所以你不需要手写任何配置文件。怎么算成功docker compose ps中 ac-db-import、ac-client-data-init 显示退出码 0一次性任务跑完即退属正常ac-database 处于 Up 且 health 为 healthy。第 3 步怎么确认数据库导入完成、服务真正就绪docker compose ps # 看容器状态 docker compose logs ac-worldserver | tail -n 20 # 看世界服日志尾部会发生什么导入完成后authserver 和 worldserver 才会被依赖条件service_completed_successfully放行启动。worldserver 启动时要加载 vmap 碰撞数据、dbc 客户端数据并连接数据库这个过程还要再等几分钟。怎么算成功docker compose ps里 ac-database、ac-authserver、ac-worldserver 三者都稳定处于 Up 状态不再重启且 worldserver 日志尾部出现Server ready字样——这意味着服务器已准备好接收客户端连接。如果 worldserver 还在反复重启跳到下文故障排查。第 4 步创建第一个管理员账号docker compose attach ac-worldserver # 接入 worldserver 的命令行控制台 AC account create admin password 3 -1会发生什么attach把你接到 worldserver 的控制台提示符是AC。account create在 acore_auth 库中写入账号3是账号安全等级0~5 的整数3 为管理员级能执行 GM 指令-1表示不限定可登录的地图即全地图权限。怎么算成功控制台返回账号创建成功的提示。然后按CtrlP再按CtrlQ脱离控制台——不要按CtrlC那会直接把服务停掉。第 5 步用 3.3.5 客户端登录验证打开魔兽世界 3.3.5 客户端在登录界面把服务器地址填为127.0.0.1客户端不在同一台机器时填宿主机局域网 IP服务器列表里会出现 realmrealm 是客户端服务器列表里的一条服务器条目用admin/password登录、创建角色、进入游戏。怎么算成功能看到角色创建成功并稳定加载出游戏场景。走到这一步魔兽世界私服客户端登录链路认证 → 世界服就完整打通了。幕后架构三个服务、四个端口各管什么整套私服在一个名为ac-network的容器网络里通信各容器职责如下容器对外端口职责ac-databaseMySQL 8.43306承载 acore_auth账号、acore_characters角色、acore_world世界数据三个库root 默认密码passwordac-authserver3724认证服务客户端先连它完成账号校验通过后引导客户端去连世界服ac-worldserver8085世界服务加载世界数据处理全部游戏逻辑ac-worldserverSOAP 接口7878SOAP一种基于 XML 的跨语言远程调用协议接口供外部工具远程调用服务器功能注意 3306 是唯一映射到宿主机的数据库端口容器间通信走内部网络ac-network比如 worldserver 连库用的是容器名ac-database而非 IP映射出来只是为了方便你在宿主机上用客户端工具直接连库查数据日常运维排查用得上。故障排查按“现象 → 原因 → 解决”快速定位worldserver 反复重启先看挂载目录权限现象docker compose ps里 ac-worldserver 状态不停变化日志开头有 WARNING。原因源码以 root 克隆时挂载的env/dist目录属主是 root容器内非 root 用户写不进去配置和日志entrypoint 脚本会明确打印这条警告。解决在宿主机执行sudo chown -R $(id -u):$(id -g) env/dist然后docker compose up -d重启容器。客户端登录界面看不到 realm现象服务器列表为空或一直转圈连不上。原因3724 或 8085 没映射到宿主机或客户端填了localhost但服务器跑在别的机器上localhost只指客户端自己所在的那台。解决宿主机执行ss -tlnp | grep -E 3724|8085确认两端口都在监听跨机登录时客户端地址改填宿主机局域网 IP。数据库导入慢或失败不要中途停容器现象等十几分钟 worldserver 还没起来。原因首次导入 5~15 分钟属正常worldserver 被依赖条件卡住属预期真正的失败通常来自某个 SQL 文件报错或 MySQL 健康检查没通过。解决用docker compose logs -f ac-db-import盯进度失败时看日志末尾报错指向的 SQL 文件都在 data/sql 下逐一定位修复后重跑导入而不是反复重建。宿主机 3306 端口被占用现象docker compose up报端口绑定失败。原因宿主机已有 MySQL 或其他服务占用了 3306。解决在项目根目录建.env文件写入DOCKER_DB_EXTERNAL_PORT3307重启后数据库改走 3307容器内部连接完全不受影响内部走容器网络与对外映射无关。改了配置却不生效现象修改后重启容器行为没变。原因你改的是*.conf.dist模板文件。正式配置是首次启动时由模板复制生成的例如env/dist/etc/worldserver.conf模板只在目标文件不存在时起作用之后不再被读取。解决直接编辑env/dist/etc/下的正式配置文件如env/dist/etc/worldserver.conf再重启容器。进阶定制改端口、调参数、写第一个模块改对外映射端口只需在项目根目录的.env文件里改映射容器内部端口不用动# .env项目根目录 DOCKER_WORLD_EXTERNAL_PORT8086 # 游戏端口 DOCKER_AUTH_EXTERNAL_PORT3725 # 认证端口改完docker compose up -d重建容器即可客户端地址对应换成新端口。调关键参数日常运维只需动env/dist/etc/worldserver.conf里的少量参数比如PlayerLimit最大在线人数默认 1000。配置加载的严格程度和各参数预设见 doc/ConfigPolicy.md改之前先查一眼避免写了无效值。生成并启用一个新模块AzerothCore 是模块化架构扩展功能靠模块而不是改主源码。用仓库自带的骨架脚本 modules/create_module.sh 生成模块./modules/create_module.sh MyModule echo MyModule.Enabled 1 env/dist/etc/modules/MyModule.conf # 在模块配置里启用之后docker compose build重新构建镜像、docker compose up -d重启worldserver 启动日志里会显示 MyModule 已加载。下一步到这里一个包含数据库、认证、世界服务的魔兽世界私服已经在容器里稳定运行3.3.5 客户端可以正常登录。建议的下一件事把MyModule骨架里的示例事件改成一个实际功能——比如写一条自定义控制台指令上线后用 GM 账号执行验证走完“部署 → 二开 → 验证”的完整闭环。【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考